おかしなコード
今日、以下のようなコードをみました。
label は string | undefined です。
const result = label ? 'hoge' : 'bar'
このコードをそのまま読むとするなら label が空文字だったら、result は 'bar’ になります。
しかし、本当にそうなのでしょうか。。。
例えば、コードを書いた人が空文字のケースを忘れていたかもしれません。
その場合、空文字のときは 'hoge’ を返して欲しかったが、その考慮を忘れていたバグである、ということになります。
一方で、仮に上記のコードがこのように書かれていたらどうでしょうか。
const result = label !== undefined ? 'hoge' : 'bar'
このコードは明示的に空文字なら 'hoge’ であることがわかります。
式の評価はできるだけ明確にすることが重要だと思いました。
最近のコメント