指摘・レビュー4 択難易度 応用

仕様は「20 歳以上なら許可」。このコードへの指摘として正しいものは?

if (user.age > 18) {  allowPurchase();}

正答

  1. > 18 だと 19 歳も通る。仕様どおりなら >= 20
  2. 1 行しかないので if の中括弧は省略すべき
  3. user.age は user['age'] と書かないと読めない
  4. 関数名は allow_purchase の形にすべき

解説

仕様は 20 歳以上なので、条件は user.age >= 20 が正しい。> 18 では 19 歳も許可され、仕様違反の不具合になる。こうした誤りは境界の値で確かめると見つけやすい。中括弧の省略や命名の形式はスタイルの話で、チームの規約が無い限り動作には影響しない。user.age と user['age'] はどちらも同じプロパティを読むので、3 番目は存在しない問題を挙げている。

reviewbugspec

この問題を含む 指摘・レビュー のテストを制限時間つきで解く

指摘・レビュークイズへ