【技術書】『プリンシプルオブプログラミング』を読んで No.1
目次
作業時間
2020/6/3
- 18:15-19:15 読書(1H)
- 19:15-19:45 ブログまとめ(0.5H)
作業報告
プリンシパルオブプログラミング(P.62まで)
第1章 前提~プログラミングの変わらぬ真実~
1.1 プログラミングに銀の銃弾はない
No Silver Bullet in programming.
- プログラミングには、魔法のような解決策はないもの
- プログラミングの成果物である「ソフトウェア」は、本質的に困難である
- ソフトウェア開発の歴史を学び「複雑さ」と戦う
1.2 コードは設計書である
Code as design.
- 設計行為の成果物はコードでしかありえない
- プログラミングは設計であり、創造的な行為である
- 設計というのは、、創造的な、かつ技芸の必要な行為である
1.3 コードは必ず変更される
Code will bechanged.
- どのようなフェーズでも、様々な理由で、コードには必ず変更が入る
- だからこそ、「変更に強いコード書く」ことを心がける
- そのためには「コードが読みやすい」ということが最も大切
第2章 原則~プログラミングのガイドライン~
2.1 KISS
Keep It Simple, Stupid
- コードはシンプルに保つこと
- コードに余計なことはしないこと
- 「less is more」は「より少ないことは、より豊かなこと」
2.2 DRY
Don't Repeat Yourself.
2.3 YAGNI
You Aren't Going to Need it.
- コードは必要最低限に、今必要なコードだけ書くこと
- コードの予想は外れて、結局利用されないことが多い
- 汎用性よりも、単純性を考えること
2.4 PIE
Program Interntly and Expressively.
- ソフトウェアの動作を把握するには、コードを読むしかない
- コードは「書かれること」よりも「読まれること」の方がずっと多い
- コードは「書く効率」よりも「読む効率」が優先することで価値が累積的に膨れ上がる
2.5 SLAP
Single Level of Abstraction Principle.
- コードの抽象レベルを揃えることで書籍の目次のようになる
- 名前で意図を伝えるために処理が1行であっても関数にしてかまわない
- 「具体的な処理を書く作業」と「抽象化レベルを揃える作業」は別の作業と心得る
2.6 OCP
Open-Closed Principle
- 拡張に対して開いているとは、「コードの振る舞いを拡張できる」ということ
- 修正に対して閉じているとは、「コードの振る舞いを拡張してもその他のコードはまったく影響を受けない」ということ
- OCPの代表的な技術は、オブジェクト指向の「ポリモーフィズム」が当たる
2.7 名前重要
Naming is important.
- 「命名」を最重要課題として認識し、慎重に取り組むようにする
- 適切な名前を付けることができたら、その設計の大部分が完成したと考えてよい
- コードを読み書きしているとき、プログラマは、常に脳への過負荷と戦っている!
所感
ほんとコード読むのは頭使う。
読みやすいコード、わかりやすいコードは本当にありがたい。
先人の知恵の詰まった技術書の勉強は毎日すべきだと思った。
一転語
人間はハングリー精神を失ったときに”若者”ではなくなります。その人が若者であるかどうかを分けるものは、このハングリー精神の有無なのです。「まだ十分ではない。まだ満腹していないぞ」という気持ちがあるかどうかです。
【勇気の法 p.118】