A Philosophy of Software Design ch1 Introduction
Introduction (It's All About Complexity)
- コンピュータソフトウェアを作ることは、人類史においてもっとも純粋な創作活動である
- 物理的な制約がない
- 仮想的な世界を作り出せる
- 想像しうるものはたいてい創造できる
- ソフトウェアを作る上で一番の制約は、自分が作っているシステムを理解する能力
- 機能がふえるにつれ、システムは複雑に
- 複雑になるにつれ、変更は大変に
- 関連する事柄全てに気を配るのが難しくなる
- 【補】ひどいと「どこを触ったらどこが壊れるかわからない」状態に
- 開発は遅くなり、不具合につながり、コストがかさむ
- 複雑性の増加は避けられないこと
- 要因
- プログラムが大きくなる
- 利用者がふえる
- 開発ツールの助けで御しやすくはなるが完全ではない
- プログラマ自身が、ソフトウェアをシンプルにする道を模索しなければならない
- 要因
- 複雑性との戦い方
- ソフトウェアの開発手法
- ソフトウェア設計は終わらない
- システムのライフタイム中、たえず再設計し続ける
- 本書の目的
- ソフトウェアの複雑性の性質について述べる
- 「複雑性」の意味とは
- なぜそれが重要なのか
- 不要なな複雑性をどう認識するか
- 複雑性を最小化するためのテクニックを提示する
- 抽象的
- すぐ適用できる、という代物ではない
- 設計上の選択肢がいくつかあったとき、比較検討に使ってね
- 抽象的
- ソフトウェアの複雑性の性質について述べる
How to use this book
- 「危険信号」のリファレンス
- コードレビュー
- 設計スキルの向上
- 実在のコードの中にある「危険信号」を認識するのが一番
- 過ぎたるは及ばざるが如し
- 「やりすぎるとこうなる」も載せている
- 良い設計とは、相反する考えや方法のバランスの上に成り立つもの
- JavaとC++で書いてるけどなんにでも適用できるよ
英語
- malleable
- 順応性のある