達人プログラマーを読んでのメモ

すごく面白い、ためになる本だから、基本的に読まなくていい、忘れてもいいことはないんだけど、読みながら付箋紙を貼っていっていたところをメモ。

1 猫がソースコードを食べちゃった

ヒント 3: いい加減な言い訳よりも対策を用意すること

つまらない言い訳をすることは猫がソースコードを食べたと言うに等しい。それは達人の仕事ではない。

6 伝達しよう

What           聞き手に何を知って欲しいのか
Interest      言いたいことの中にある彼らの興味とは何か
Sophiscate  それらはどれくらい洗練されているか
Detail          彼らはどの程度詳細を知りたがっているか
Own            誰にその情報を知ってもらいたいのか
Motivate     話を聴いてもらえるには、どうするのか

伝えるときに心得ておくべきこと。この項はとても重要。とても大切なことがたくさん書いてある。

ヒント 10: 伝える事柄と、伝える方法は車の両輪だと考えること

伝えようとする行為は、ひとに伝えられなければ意味はない。
人月の神話―狼人間を撃つ銀の弾はない (Professional computing series (別巻3)) ピープルウエア 第2版 ? ヤル気こそプロジェクト成功の鍵 ソフトウェア開発のダイナミズム (MicrosoftPRESS) を向こう18ヶ月で読む計画を建てること。

10 曳光弾

曳光弾とプロトタイピング。プロトタイピングは使い捨て、曳光弾はシステム最終形の骨格をなすもの。

ヒント 16: プロトタイプの真の目的は学びにある

とても大切な違いだそうで。

18 デバッグ

ヒント 26: "select"はおかしくない

OSもミドルもたいていの場合、おかしくない。それを疑うよりもさきにもっと疑うべきものがあるはず。

26 契約による設計

  • 事前条件
  • 事後条件
  • クラス不変表明

オブジェクト指向入門 (ASCII SOFTWARE SCIENCE Programming Paradigm)、ひとに貸したままだ。読まなきゃ。

26 結合度の細小化とデメテルの法則

機能に対するデメテルの法則は、オブジェクト中のすべてのメソッドは以下のカテゴリーに属しているメソッドのみを呼び出すべきである。
自分自身
メソドに引き渡されたデータ
自身が生成したオブジェクト
直接保持しているコンポーネント・オブジェクト

これ以外だとグローバルなオブジェクトくらいしか思いつかないから、それはやめとけってことかな。まあ、そういうのは褒められはしないだろう。

28 時間的な結合

同期とか意味ではなく、フローの直列性に依存するような設計をすべきではない。並列性を意識した設計をすべき、ということ自体にも納得できるけど、それにあわせて、このセクションの最後にあった、

(並列性の設計を先送りするのではなく、)今がその時でしょう?

というのが特にジンときた。無駄な仕事をする必要もないし、タスクにはプライオリティをつけるべきなのは当然だけど、ただ、怠惰な故の汚い設計を認めるべきではない。やるべきことはやること。

37 不可能なパズルを解く

ヒント 55: 枠にとらわれずに考えるのではなく、枠を見つけだすこと

現実世界では枠を見つけだすこと、問題発見することこそが難しい。

43 容赦ないテスト

ヒント 62: 早目にテスト、何度もテスト、自動でテスト

44 すべてはドキュメント

オブジェクト指向で開発しているのならハンガリアン記法はほとんどの場合、効果を発揮しない。

46 誇りと愛着

ヒント 70: あなたの作品に署名すること

我々は所有することによって誇りを持つべきなのです。「私はこれを記述した、そしてこの仕事の後ろには私が付いている」と。品質の証明として、あなたの署名が入っているべきなのです。あなたの名前をコード中に見い出すことによって、みんな、それがきっちりと記述、テスト、ドキュメント化されたものであることを確認できるのです。それが本当のプロの仕事です。それが本当のプロによって記述されたものなのです。
達人プログラマ

うう、署名できると言えるようなコードなんて数えるほどしか書けていない。でも、すべてのコードに署名しないといけないんだろうな。署名をしなければならないと思うからこそ、本気でコードについて考えることができるのだろう。