条件式の記述

  • 私は条件式を記述する際、下記のように記述します。
if ($input_value == 1) { ....
  • 理由?最初からそうだったし、コードを読むとき、「もし、変数input_valueが1ならば...する」と読むことに慣れているから。
  • 他人のコードを読むことも、わりとありますが、たいてい上記のように記述してあります。

左に定数

  • ところが、下記のように記述している人がたまにいます。
if (1 == $input_value) {.....
  • 誤って等号を1コ書いた場合は代入されて、期待する判定とならない。左辺に定数を書いておけば、代入できないからコンパイルエラーになるから未然に防げます。的な記事を、昔何かで読んだ記憶があります。私がC言語をやってた頃なので、たぶん20年くらい前だと思います。

やってみたけど

  • その時は、感化されて「左辺に定数」記述をしたこともありましたが、いつの間にかやらなくなりました。
  • そんな間違い、滅多にしないし、間違った場合でもすぐに気づくからです。条件文書いたら、テストするよね、って話。
  • それ以上に、読み返す際に読みにくいというデメリットが大きいと感じました。慣れもあると思いますが、読み方が逆なんです。
  • 仮にやりましょう!となったとして、定数との比較の場合は良いけど、変数との比較の場合は?なんか無駄な思考が入ってしまいます。
if (1 == $input_value) {... // 定数を左辺値に書くよ!
if ($comp_value == $input_value) {...// ホントはinput_valueを左に書きたいけど、直前の式でinput_valueが右辺だからこっちも揃えるの?
  • あとは、圧倒的に少数派。自分だけ頑張っても周りがそうでなければ、ただのチームワークを乱す独善くんになってしまいます。

というわけで

  • 今はもっぱらphperですが、「左辺に定数」は、やっぱり少数派と感じています。
  • そういうコードをみても、「ああ、アレね」ってスルーしますが、強要されたらちょっと嫌だな。

facebook slideshare rubygems github qiita