おかしなコード

今日、以下のようなコードをみました。

label は string | undefined です。

const result = label ? 'hoge' : 'bar'

このコードをそのまま読むとするなら label が空文字だったら、result は 'bar’ になります。

しかし、本当にそうなのでしょうか。。。

例えば、コードを書いた人が空文字のケースを忘れていたかもしれません。

その場合、空文字のときは 'hoge’ を返して欲しかったが、その考慮を忘れていたバグである、ということになります。

一方で、仮に上記のコードがこのように書かれていたらどうでしょうか。

const result = label !== undefined ? 'hoge' : 'bar'

このコードは明示的に空文字なら 'hoge’ であることがわかります。

式の評価はできるだけ明確にすることが重要だと思いました。