[読]プログラマが知るべき97のこと

yyamano2011-02-13

プログラマが知るべき97のこと

プログラマが知るべき97のこと

年末年始に読んだ97シリーズの第二弾。第一弾のアーキテクトよりカオス。分野も深さもバラバラ、時には矛盾している。全部を理解するのは難しいと思うので、興味があるところを拾い読みするのがよいと思う。アーキテクトに微妙さを感じたのに、プログラマにはそれを感じないのは、なぜ著者達がそのような結論を出したのかが分かりやすいからなんだろうと思う。この10年くらいの色々な分野の知恵がつまっているので、若いプログラマーはここから色々な本を掘り起こして読んで行くと良いのではないだろうか。

面白かったのは「05 美はシンプルさに宿る」、「21 技術的例外とビジネス例外を明確に区別する」の二つ。
ソフトウェアにおける美しさは、Boochに「ところで、美とはなんでしょうか。私達は、ソフトウェアにおける美というものを正しく理解できていません。」と問われてから、ずっと考え続けて、でも自分のなかでは結論が出ていないテーマだ。ここでは、シンプルなコードが美しいと言っている。そして、シンプルさとは、「アプリケーションやシステムが全体としてどれほど複雑であっても、個々の部分を取り出してみると、全てがシンプルになっています。単一の責務を持ったオブジェクトは、メソッドもすべて機能が絞り込まれており、名前を見ればすぐに、持っている機能がわかるようになっています。」と言っている。ここでは大きな構造の話と小さなコードの話が一緒になっているように感じるが、すくなくとも大きな構造に関しては僕も同意見だ。
技術的例外とビジネス例外は完全に区別できるだろうか。できるシステムもあるだろうし、その場合にはそのように努力すべきだとは思う。しかし、何らかの技術的なエラーで処理が続行できないが、ビジネス的な観点ではその場合にも何らかの処理が必要な場合はどうだろう。例えば分散システムで、コミュニケーションするシステムがダウンしている場合でも、できる範囲で何らかの処理をしないといけない場合はどうだろう。また、プリンタ出力やメール送信ができない場合に別の方法で連絡しないといけないとするとどうだろうか。この場合には境界が曖昧になる。