読者です 読者をやめる 読者になる 読者になる

わすれっぽいきみえ

みらいのじぶんにやさしくしてやる

17日目: 本『コードコンプリート上』 14 - 19章読んだ

CODE COMPLETE 第2版 上 完全なプログラミングを目指して

CODE COMPLETE 第2版 上 完全なプログラミングを目指して

これでやっと上巻が終わり。長い…。

14 - 19章はステートメント。制御構文やループの話を書いている。読めば読むほど『レガシーコード改善ガイド』を読んでいる気持ちになる章。

昨日書いた変数のところに比べると個人的にはステートメント周りの方が読みやすかった。変数は目新しいものではないとはいえデータ型とかの知識を忘れがちだが、ステートメントというのは言語によってそれほど大きな違いがないので、「まぁ確かにこの書き方はBad practiceだなぁ」というのがわかりやすく読めた。

個人的にはBoolの話が面白くて、業務もだいたいPHP使ってるからBool型のない言語の世界を忘れてしまってた*1んだが、CにはないからBoolを定義しよう、みたいな話が出てきて面白かった。あと始めは二値で済んだからBoolでもよかったけど、後から意味づけが増えて死んだ例を知ってるので、やっぱ型を定義しておくのは偉大だなぁと思った。ここら辺は本当はこれよりまえの10章あたりで話していた内容だが、評価式に用いるので今回読んだステートメントと切っても切り離せない関係だ。

あとループ…。while文は柔軟だと書かれてたけど、個人的には始め書いてたループの中身が肥大していってどのタイミングで抜けられるのかわからなくなることが多いのでwhileは使いたくない。そりゃwhileの中身が増えるからいけないんだ、とかwhileの中身は小さく小さく作るべきだとかごもっともなんだけど、自分一人で開発しているわけではないコードを書いている以上、後から誰だどんな思想を持ち込んでコードが書きかわるかわからないので、よほどきっちりとした規約なりコードレビューなりをしないと辛くなるよなと思った。for / foreachは抜け方がある意味わかりやすいし、後からの拡張には対応しづらいかもしれないが、だからこそ変な思想が入りにくくもあるので、whileめちゃ推しの文調にはあまり賛同できなかった。

*1:PHPにBoolがあるからといって型変換や厳密比較がしやすいとは言ってない。本当に意味不明なキャストやめてほしい。覚えるのもしんどいレベルのキャストなので「だいたいこれで評価あってる」って放置しがちになるのも良くない。