プログラミング初学者のための実務につながる練習問題 JavaScript002 性別パラメータ変換処理の仕様変更 その1

2020年5月19日

今日のタスク

前回のタスク http://tamiblog.xyz/2020/05/15/post-552/ の後に仕様変更が発生したので対応してください。

仕様変更

  • 文字列 Male の場合は、Mを返す
  • 文字列 Female の場合は、Fを返す
  • 文字列 Unknown の場合は、Uを返す
  • それ以外は空文字を返す

性別の不明の場合は Unknown という文字列が来るので、その場合は U を返すようにしてください。

実装例

パターン1

const convertGender = gender => {
  if(gender === 'Male') {
    return 'M'
  } else if (gender === 'Female') {
    return 'F'
  } else if (gender === 'Unknown') {
    return 'U'
  } else {
    return ''
  }
}

パターン2

const convertGender = gender => {
  let result = ''

  if(gender === 'Male') {
    result = 'M'
  } else if (gender === 'Female') {
    result = 'F'
  } else if (gender === 'Unknown') {
    result = 'U'
  }

  return result
}

三項演算子の場合はさらに可読性が落ちてしまい、理解に時間がかかります。

convertGender = gender => {
  return gender === 'Male' ? 'M' : gender === 'Female' ? 'F' : gender === 'Unknown' ? 'U' : ''
}
switchの場合。
convertGender = gender => {
  switch(gender) {
    case 'Male':
      return 'M'
    case 'Female':
      return 'F'
    case 'Unknown':
      return 'U'
    default:
      return ''
  }
}

if文やswitch文は記述は長いですがわかりやすいです。一方で三項演算子は慣れていないと初見では理解が難しいと思います。

コード量を短くすることは時には大切ですが、コードは自分以外の人や数ヶ月後の自分が読むことを想定して書くと良いでしょう。

お疲れ様でした。