読書要点「プリンシプルオブプログラミング」第5章


習慣

プログラマの習慣であり、行動指針である。
良いコードを書くプログラマが日頃意識していることを取り入れていきたい。

プログラマの3大美徳

プログラマの3大美徳とは、「怠慢」「短気」「傲慢」のことである。
高度な知的作業を伴うプログラマが、効率よく仕事をこなすための美徳である。

  • 怠慢

労力を減らすことに労力を割くことを厭わない姿勢である。
実際に作業をする中で、繰り返しが多かったりする部分などに自動化を行っていくと良い。
自動化の恩恵が大きそうな箇所を見極めるのがポイントである。
ドキュメントなども仕組みを作っておくことで再利用性が高まる。

  • 短気

コンピュータが正常に、効率的に動作していないことに憤る姿勢である。
発生しうる問題に早い段階で手をうっておくことで、快適な時間を過ごすことができる。

  • 傲慢

傲慢なほどのプロ意識で、人に見せても恥ずかしくないコードを書き続ける姿勢である。
きれいなコードは保守が容易である。
日頃からきれいなコードを書く意識は生産性の向上にもつながる。

ボーイスカウトの規則

ボーイスカウトは訪れた場所をもとの状態よりきれいにしてから帰る。
プログラマも、自分が書いた部分だけでなく読んだコードもきれいにしてからコミットを行うべきである。

きれいなコードは保守性が高く望ましいものである。
改善の余地がある点を見つけた段階で、それを見つけた人が改善するのが最も手っ取り早い。
技術的負債の早期返済という側面もある。
チーム全体できれいなコードを書く習慣を保ちたい。

パフォーマンスチューニングの箴言

パフォーマンスチューニングにより、コードは早いものになる。
しかし、最適化が及ぼす悪影響は開発の上で見過ごせない。
そのため、最適化には2つのルールがある。

  • 行ってはならない。
  • まだ行ってはならない。

早いコードを書くことの優先度は、良いコードを書く優先度を上回ることはない。
また、テストや他の箇所の実装、リリースなどやるべきことが山積している状況で最適化が優先されるケースはあまりないことも抑えておきたい。
過剰な最適化がもたらす悪影響として、可読性の低下、品質の低下、複雑性の増大、保守の阻害、環境間の競合、作業量の増大といったものがある。

良いコードと良いパフォーマンスは決して矛盾した概念ではない。
良いコードであれば最適化もそれほど大変にはならないことが多い。
速度を求めたあまり他をおろそかにすることがないようにしたい。

エゴレスプログラミング

エゴ、すなわちうぬぼれやプライドを捨ててプログラミングに取り組む。
プログラミングの主眼は自己顕示ではなく、よいものを作ることに置かれるべきである。
そのため協力や指摘を積極的に求め、受け入れることが重要である。
そして、それを実現するための環境を構築する良い環境が重要である。

1歩ずつ少しずつ

プログラミングでは、一度に複数の問題を相手取るようなことはせず、1つ1つ問題を着実にクリアしていくことを意識する。
複数の問題を相手取ると、問題が混線して解決までに余計な時間がかかることが多い。
できるだけ1行1行書いては確認していったほうが、結果として品質も時間的な効率も良くなることが多い。
問題に取り組むときもコードを書くときも、小分けにしたものをクリアしていきたい。

TMTOWTDI

他の人が利用するツールは、目的を達成するための手段を複数用意しておく。
ツール側は複雑になるが、利用する側は状況に応じて手段を選択することで、シンプルなコードを書くことができる。
ツールの実装では、簡単なことは簡単に、難しいことも実現できるように意識する。
ツール利用時の選択肢の多さは一見複雑性を増すだけに思われるが、ツールは実装にかかる時間より使われる時間のほうが長く、ツールの充実にはレバレッジがかかる。
ツールを作成する側は複雑さを受け入れ、ツール利用者にシンプルを提供できるようにしたい。