📝
技術書読書ログ「ルールズ・オブ・プログラミング」
概要
できるだけ単純であるべきだが、単純化してはいけない
As simple as possible, but no simpler
これが本書の核となる「ルール1」
- 問題や要件に対して、必要十分である
- 必要以上に抽象化や一般化、最適化がされていない
このようなプログラミングをするのが望ましい
個人的な学び・気付きポイント3点
優秀・偉大なプログラマー
- 「易しい」問題を、いかに「単純」な解放で解くか、それが優秀なプログラマーの境目
- 「難しい」問題を「単純」な解放で解決することができるのが、偉大なプログラマー
- 偉大なプログラマーの中心的なスキル
- 一見「難しい」ように見える問題を、「易しい」問題だと見抜くことができる
単純
- 「単純」なコードは読みやすく、理解しやすく、デバッグしやすいコード
- 「単純」なコードは、必要以上に抽象化や一般化、最適化がされていないコード
- 重複の排除も複雑化に繋がる 少量のコード・単純な概念は無理に共通化しないほうがいい
複雑性の局所化
- どうしても複雑にならざるを得ないコードは出てくる
- 排除できない複雑性(状態)は分離・局所化し、インタフェースと相互作用を単純にする
- コードの内部にある詳細が複雑でも、外部インタフェースが単純であれば、その複雑性はあまり問題にならない
- 相互作用も単純にしておけば、システムが大きくなっても、複雑性は増加は抑えられる
感想
「如何に問題を可能な限りシンプルにできるか」
プログラミングもだけでなく、他の色々なことに対しても、この意識を心がけようと思わせてくれる本でした。
そしてプログラミングに関しては、概要にも書いた「問題や要件に対して、必要十分である」「必要以上に抽象化や一般化、最適化がされていない」を心がけようと思います。
Discussion