if 文と {} とコーディングスタイル
最近、また if 文における {} 省略の話をよく見掛けるようになった。何年たっても繰り返される話なんだろうなと思う。
なので、人のことをとやかくいう前に、自分のコードの変遷を考えてみると、簡単に言うと以下の様になる。
- OOP 厨以前
- {} 必須派
- {} なしはバグの温床
- OOP 厨時代
- {} 以前に分岐ありえない
- {} 以前に分岐は悪。クラス分けするのが正義
- OOP 厨脱却後
- 分岐はあり。{} は基本的に使わない
- 後々ややこしいことありそうだなと思うところは {} つける
- {} ありの部分は、将来リファクタリング入る可能性もあるので要注意
三項演算子の話も似たようなことでよく出てくる話なんだけど、どっちの話も同じような話で、そもそも意味がわかってないという人と、使いかたが合理的じゃないという人が槍玉に上げられてるような気がする。
で、そういうことが発生しないようなコーディング規約みたいな制約をみんな使っちゃっていて、そういうものの大半は、ダメな人がダメなことをしないようにという排除方向に向かってるとしか思えない。
勿論、それが局所的な状況においては必要なケースもあるだろうし、政治的な理由でそうなることも多いと思う。
でも、俺は十把一絡でそういうことをやるのがいいとは思えないし、その人のレベルによって自由度はある程度以上は絶対必要だと思う。そのスキルに応じて、その人が納得出来るコードや自然な書き方というものを書いていける環境は、ちゃんあるべきだと思う。
そういうことを考えると、プログラミング一つを取っても、習熟度に応じたインタフェースという意味での規約があって、そこを超えたらまた変わってくるコーディングスタイルが出てきてという形が、綺麗なのかなと考えたりしてる。
まあ、そんな観点は抜きにしても、 if の後に {} 使ってるかどうかなんてレベルの話であれば、そういうチェッカーは殆どの環境でツールとして存在してるし、そういうツールが無かったとしたら、あなたがその環境のことを知らないのでもっと勉強しなきゃいけないレベルか、逆にアーリーアダブター過ぎるので実装すればみんな幸せあなたも幸せってことなんですよね。
結局、コーディングスタイルレベルだったら、殆どの場合、機械的に抑えられる話だし、大した要件じゃない。
そもそも {} あるなし論争で済むような短いロジックだったらテストコードをちゃんと書かせた方がよっぽどマシだ。
それとも、昨今の状況でも if と {} とかで喧喧囂囂とかするレベルの難しいことがいろいろあるのか?
そんなことが致命的なレベルで重要な話なの?
そんなことより、ウォーターフォールでも TDD でもなんでも良いんだけど、品質保証しづらい一番キツい部分をどう担保するかみたいな部分の方が大切じゃないのかなあなど思ったりする。