気ままなつぶやき

おべんきょしたこととか

【読書】プロダクティブ・プログラマ 〜実践編〜

プロダクティブ・プログラマ -プログラマのための生産性向上術 (THEORY/IN/PRACTICE)


技法編の続き。

【読書】プロダクティブ・プログラマ 〜技法編〜 - 気ままなつぶやき

以前書いたの技法編と同じく
とても個人的な見解を織り交ぜて、気に入った部分だけをピックアップしますた

古代の哲学者の教え

複雑性には、2つある。

  • 本質的複雑性:本質的な複雑さ
  • 偶発的複雑性:本質に関係なく生まれてしまった複雑さ

この中から偶発的複雑性の原因を見つけだし、排除し、
本質的複雑性に対して対処する。

偶発的複雑性に時間をとられてはいけない

オッカムの剃刀

「ある事柄を説明するために、必要以上に多くの前提を仮定するべきではない」

デメテルの掟

情報隠蔽をしっかりしましょうということ。

ただし、「.を複数使うメソッド呼び出しをするな」という表現は誤解を招きやすい感。

過去の教訓

「昔のテクノロジーから得られる教訓にも目を向けてみる」
by 本書のNOTE

権威を疑う

開発チームをまたいだ標準化も、方法を誤ると
標準化されていないことよりも、悪となる可能性がある

「当たり前とされていることに疑問を持つ」

怒れるサル

「今までそうしてきたから」を理由にしてはいけない
「なぜそうしてきたか」を考えなければならない。

これは本当に大事なことだと思うなぁ(´・ω・`)

目的が達成できるのであれば、慣例に習う意味なんてないと個人的には思う。

流れるようなインターフェイス

DSLで主流になっているスタイル

JavaBeansの仕様から外れた例。

アンチオブジェクト

問題の「前景」と「背景」を入れ替えて、問題をより単純にして解決する

メタプログラミング

Javaのリフレクションは制限が強い
JVM上で動くGroovy。Javaより、簡潔にリフレクションのコードが記述できる
また、RubyJavaよりも遥かにメタプログラミングをサポートしている

ただし、使い方を誤ってはいけない

Composed MethodパターンとSLAP

Composed MethodパターンとTemplate Methodパターンの説明。

要は、処理をメソッドに分割しているのと継承。
再利用が可能になり、TDDも採用しやすくなる。

SLAP

Single Level of Abstraction Principle

「同じメソッドに属するコードの抽象化のレベルを統一する」

多言語プログラミング

これはスキップ

理想のツールを探す

理想のテキストエディアを求めて

「理想のエディタ」に必要な機能

不適切なツールを拒否する

適切なツールを選ぶのと同じくらい重要




こんな感じ(○゚ε゚○)

適切なツールを選択するって難しいな。
それがフリーのツールであれば、もう少し気楽に取り組めるんだけど
有償のものを導入したい場合は、失敗した時のリスクもあるから、色々検討が必要。

むずかしいね