2004年07月16日
川俣晶の縁側過去形 本の虫感想編total 4888 count

アジャイルソフトウェア開発の奥義 ロバート・C・マーチン ソフトバンクパブリッシング (感想その2 再びYAGNI)

Written By: 川俣 晶連絡先

 122ページあたり(単一責任の原則)まで読んできて、引っかかったのでここに書いておきます。

 気になることは吐き出してさっぱりしてから読み続けよう、と言うわけです。

「もろい」設計 §

 このあたりでは、「単一責任の原則」に沿っていないと変更に対して「もろい」設計になるという話が書かれています。

 しかし、これは未来の変更を予測して、それに適応しようとする試みに見えます。もちろん、未来の変更は解らないので、それについて備えることはYAGNIではないかと私は思うわけです。もし、変更が発生しなければ「もろさ」が露呈することはないし、全く異なる構造に置き換えられるとすれば、「もろさ」を克服するような構造を導入したことは単なる時間の無駄です。

 個人的には、今この瞬間のソースコードがシンプルであることが重要なのであって、未来の変更に対して何か備えることはYAGNIとして戒められるべきではないかと思います。もしかしたら、多くの場合、この2つの態度によって書かれたコードは結果的に同じになるかもしれません。しかし、それがもたらす効能を見た場合、両者はけして同じではないと思います。

 おそらく、この2つを混同していないように見えることが、ケント・ベックという人に対する私の高い評価につながっていて、逆に混同しているかのように見えるところが本書に対する疑念につながっているような気がします。

スコア計算の例を見ると §

 スコア計算の例で、役割を2つのクラスに分けたことが重要と書いてありますが、読んでみるとクラスが2つに分かれたのは「役割を分けた」のではないように読めます。

変数ballは、scoreForFrameにプライベートなイテレータで、また、いつもそれに付随している子分のようなものだから、これはすべてまとめて1つのオブジェクトにすべきだよ

 これにより、結果的に役割が分かれましたが、この文章を見る限り、相互に関連が深いものを1つのクラスにまとめただけで、役割を分けることを目的としているようには見えません。

そもそも「役割」って何よ §

 究極的に、このあたりの文章が素直に読めないのは、そもそも「役割」って何よ、ということです。こんな曖昧な自然言語をプログラム開発上の指針として使うことは、自滅行為ではないのでしょうか? 関わる人数が増えれば、「役割」に関する認識がどんどん食い違っていくことがあり得ると思います。え? ペアプログラミングしていれば自然に摺り合わされる? 摺り合わされるという保証はないし、仮に摺り合わされるとしても、摺り合わされる前に食い違った認識で相互に矛盾したコードを書いてしまう可能性はあるでしょう。しかも、役割が永遠不変であるわけではなく、どんどん変化していくことが当然予測されます。そのような環境下で、実用上十分な摺り合わせが可能であるという前提を置くことは、ちょっと怖すぎます。だから、最初から、「役割」などという曖昧な言葉に依存すべきではないと思います。

変更が発生するまで「単一責任の原則」を適用してはならないと書いているけれど §

 変更が発生するまで「単一責任の原則」を適用してはならないと書いていて、途中まではYAGNIの原則が解っているかのように見えるところが、また本書のやっかいなところかもしれません。

本書の他の感想編はこちら:

感想その1 YAGNI?

感想その3 悪書暫定認定

Facebook

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20040716113801
サイトの表紙【感想編】の表紙【感想編】のコンテンツ全リスト 【感想編】の入手全リスト 【感想編】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.