📝

技術書読書ログ「ルールズ・オブ・プログラミング」

2024/04/24に公開

概要

https://www.oreilly.co.jp//books/9784814400416/

できるだけ単純であるべきだが、単純化してはいけない

As simple as possible, but no simpler

これが本書の核となる「ルール1」

  • 問題や要件に対して、必要十分である
  • 必要以上に抽象化や一般化、最適化がされていない

このようなプログラミングをするのが望ましい

個人的な学び・気付きポイント3点

優秀・偉大なプログラマー

  • 「易しい」問題を、いかに「単純」な解放で解くか、それが優秀なプログラマーの境目
  • 「難しい」問題を「単純」な解放で解決することができるのが、偉大なプログラマー
  • 偉大なプログラマーの中心的なスキル
    • 一見「難しい」ように見える問題を、「易しい」問題だと見抜くことができる

単純

  • 「単純」なコードは読みやすく、理解しやすく、デバッグしやすいコード
  • 「単純」なコードは、必要以上に抽象化や一般化、最適化がされていないコード
  • 重複の排除も複雑化に繋がる 少量のコード・単純な概念は無理に共通化しないほうがいい

複雑性の局所化

  • どうしても複雑にならざるを得ないコードは出てくる
  • 排除できない複雑性(状態)は分離・局所化し、インタフェースと相互作用を単純にする
    • コードの内部にある詳細が複雑でも、外部インタフェースが単純であれば、その複雑性はあまり問題にならない
    • 相互作用も単純にしておけば、システムが大きくなっても、複雑性は増加は抑えられる

感想

「如何に問題を可能な限りシンプルにできるか」

プログラミングもだけでなく、他の色々なことに対しても、この意識を心がけようと思わせてくれる本でした。

そしてプログラミングに関しては、概要にも書いた「問題や要件に対して、必要十分である」「必要以上に抽象化や一般化、最適化がされていない」を心がけようと思います。

Discussion