条件式の記述
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ですが、「左辺に定数」は、やっぱり少数派と感じています。
- そういうコードをみても、「ああ、アレね」ってスルーしますが、強要されたらちょっと嫌だな。