第6章 手法 ~プログラマの道具箱~
6.1 曳光弾
英語ではTracer ammunition。
ポイントは、最終形にも残る「骨格コード」のこと。
最初に動作する土台を作ること。試行錯誤しながら、開発を進める。
6.2 契約による設計
Design by Contract (DbC).
思い違いを早期発見すること。
アサーションを使うのが、実際の開発時にもよく便利だと感じていますね。
6.3 防御的プログラミング
安全性を高める方法は何?エラーや想定外の入力を前提にしてコードを書くこと。例外処理や入力チェックは、後回しより、徹底すること。
6.4 ドッグフーディング
犬と何の関係あるの?
英語のDogfoodingの下に、「Eating your own dog food」もある。
ソフトウェアを味見すること、つまり自分が作ったソフトを自分で使ってみる。それで問題を見つけ出す。
6.5 ラバーダッキング
英語では、Rubber ducking。
これは、デバッグ方法。
6.4にも繋がるね。見つけ出した問題は、どうする?自己解決を促す。
説明しようとしているように、考えを口に出しながら、頭の中で問題点が浮かび上がる。
6.6 コンテキスト
「文脈会話」「文脈思考」のこと。
迷子にしないこと。
第7章 法則 ~プログラミングのアンチパターン~
7.1 ブルックスの法則
工数は、人月で計算するけど、「人」と「月」は交換不可能ってことがポイント。人と人の依存関係や、教育時間も考えないといけない。
7.2 コンウェイの法則
アーキテクチャの特徴と言っている。
これは、組織に従う。
7.3 割れた窓の法則
小さな問題を放置すると、全体が急に崩れるよ。
悪いコードは「蟻の一穴」ということをちゃんと覚えないといけない。
7.4 エントロピーの法則
コードは無秩序へ向かう。だから、自然と腐っていく。
腐敗の兆候をちゃんと掴むこと。
7.5 80-10-10の法則
プログラミングに万能薬はないことを覚えるべき。
ユーザーが求めることの80%は短時間で実現可能。10%は相当な努力が必要。10%は完全に実現不可能。
ならば、どうすれば良い?
万能薬より専門薬。
7.6 ジョシュアツリーの法則
英語でJoshua Tree Principle(JTP)。
名前がないものは見えない。名前を知ることで存在を知る。
だから、実践すべきことは何?チームで、名前を付けて共有すること。
7.7 セカンドシステム症候群
2番目のリリースは、余計な機能を詰め込みすぎて機能過多になりがち。
ユーザーを考えて解消すること。
7.8 車輪の再発明
これは学生時代でもよく話を聞いたことで、馴染みのある言葉。
既存の解法を知らずに同じものを作り直すことは、一言で言うと、非効率。
7.9 ヤクの毛刈り
本来の目的を見失い、副次的なことに時間を取られちゃうのが、もったいないね。
デバッグや障害調査時に使う方法、スタックトレースも連想できるね。