- 作者: 和田卓人,Kevlin Henney,夏目大
- 出版社/メーカー: オライリージャパン
- 発売日: 2010/12/18
- メディア: 単行本(ソフトカバー)
- 購入: 58人 クリック: 2,107回
- この商品を含むブログ (337件) を見る
19 誰にとっての「利便性」か (グレゴー・ホーペ, Gregor Hohpe)
これはよくある話ですね。プログラマ ( 作る側 ) にとって便利でも、ユーザ ( 使う側 ) にとっては全く便利ではないものを作らないようにすべきである、という話。
今回のエッセイではAPIについて語られていますが、いろんな場面でいえることですね。
APIはドキュメントを見れば分かるようにするというのは、最低限必要だと思うのですが、できれば使用した場合にも後で一体何をするコードなのか分かりやすいようになっていてほしいですね。
エッセイに書かれているような例でいうと
walk(true)
のようなコードよりは
run
のほうがいいという感じですね。
実際、「歩く」と「止まる」を
walk(true) walk(false)
とかにされるよりは
walk stop
のようになっていてほしいですね。
作る側からすると、一種のラッパー関数やラッパークラスなどが増えるのでまったくもって利便性はないと思うのですが、ユーザからすると大量のプロパティを指定させられるより ( 特に考えられた命名のもとでは ) 複数の関数やクラスに分割されている方が楽だったりしますね。
などと他人事のように言っていますが、自分も作る側に回った時にはしっかり注意しないといけませんよね。
20 すばやくデプロイ、こまめにデプロイ (スティーブ・P・バーチャック, Steve Berczuk)
こういうことはあまりやったことがないので詳しくはないのですが、本番の環境と開発環境が異なるというのはよく聞く話です。
そして、そのような場合に後回しにされたデプロイで問題が発生するというのも、よく見かける話です。
こういったことを防ぐために、「すばやくデプロイ、こまめにデプロイ」ということなのでしょう。
テストやリファクタリングと同じように後回しにされたデプロイで問題を起こしたりすることのないように、インストールやデプロイのプロセスも早い段階から進めていくべきみたいですね。
21 技術的例外とビジネス例外を明確に区別する (ダン・バーグ・ヨーンソン, Dan Bergh Johnsson)
例外についての話ですね。
例外は大体の言語で実装されているものですよね。配列の要素数を超えて参照を行おうとした場合などに発生しますね。
技術的例外とはプログラムの間違いによって発生する例外のことで、ビジネス例外というのはロジックにより発生された例外のことのようです。
つまり技術的例外は根本的にコードの誤り、バグによって発生しているもので、ビジネス例外は組み込まれたロジックを担う「正しい」コードの一部であるということでしょうか。
技術的例外は基本的にはクライアントコードで処理することはしないようにします。そのままトップレベル、アーキテクチャレベルまで通過させるのが普通です。 ( Exceptional C++ で出てきた ) 例外中立の立場から考えれば、クライアントコードで処理しなければ、もちろんトップレベルまで通過させますよね。
ビジネス例外はもちろんクライアント側で処理するべきですが、ここでエッセイではこの例外は状況に合わせて新たな例外を定義するか、技術的例外とは異なる階層構造に属する例外にすべきだと書かれています。同じ例外で処理されていると確かに混乱のもとですね。