【読書】プロダクティブ・プログラマ 〜実践編〜
技法編の続き。
【読書】プロダクティブ・プログラマ 〜技法編〜 - 気ままなつぶやき
以前書いたの技法編と同じく
とても個人的な見解を織り交ぜて、気に入った部分だけをピックアップしますた
古代の哲学者の教え
複雑性には、2つある。
- 本質的複雑性:本質的な複雑さ
- 偶発的複雑性:本質に関係なく生まれてしまった複雑さ
この中から偶発的複雑性の原因を見つけだし、排除し、
本質的複雑性に対して対処する。
偶発的複雑性に時間をとられてはいけない
オッカムの剃刀
「ある事柄を説明するために、必要以上に多くの前提を仮定するべきではない」
過去の教訓
「昔のテクノロジーから得られる教訓にも目を向けてみる」
by 本書のNOTE
権威を疑う
開発チームをまたいだ標準化も、方法を誤ると
標準化されていないことよりも、悪となる可能性がある
「当たり前とされていることに疑問を持つ」
怒れるサル
「今までそうしてきたから」を理由にしてはいけない
「なぜそうしてきたか」を考えなければならない。
これは本当に大事なことだと思うなぁ(´・ω・`)
目的が達成できるのであれば、慣例に習う意味なんてないと個人的には思う。
流れるようなインターフェイス
DSLで主流になっているスタイル
JavaBeansの仕様から外れた例。
アンチオブジェクト
問題の「前景」と「背景」を入れ替えて、問題をより単純にして解決する
メタプログラミング
Javaのリフレクションは制限が強い
JVM上で動くGroovy。Javaより、簡潔にリフレクションのコードが記述できる
また、RubyはJavaよりも遥かにメタプログラミングをサポートしている
ただし、使い方を誤ってはいけない
Composed MethodパターンとSLAP
Composed MethodパターンとTemplate Methodパターンの説明。
要は、処理をメソッドに分割しているのと継承。
再利用が可能になり、TDDも採用しやすくなる。
SLAP
Single Level of Abstraction Principle
「同じメソッドに属するコードの抽象化のレベルを統一する」
多言語プログラミング
これはスキップ
理想のツールを探す
理想のテキストエディアを求めて
「理想のエディタ」に必要な機能
- マクロレコーダ:同操作を繰り返す場合は、マクロレコーダを活用
- コマンドラインからの起動が可能:TextMateはできるよ
- 正規表現による検索・置換が可能
- データの追加が可能なクリップボード
- マルチレジスタ
- クロスプラットフォーム
不適切なツールを拒否する
適切なツールを選ぶのと同じくらい重要
こんな感じ(○゚ε゚○)
適切なツールを選択するって難しいな。
それがフリーのツールであれば、もう少し気楽に取り組めるんだけど
有償のものを導入したい場合は、失敗した時のリスクもあるから、色々検討が必要。
むずかしいね