Oh 脳《125》セミナー通信:婚姻届問題(家系図問題)

記事一覧|Oh 脳: after ZERO《其之佰弐拾伍》
セミナー通信:婚姻届問題(家系図問題)

《監修》小泉ひよ子とタマゴ倶楽部
第0版♪1988/10/12

りんごでもいっしょに, 1995

二人でのんびり 生きていこうよ
あなたには 私が似合う

関連記事


さて、今回の演習課題はいかがでしたか。

この「婚姻届問題(家系図問題)」では、着眼点を少し変えるだけで、本質的な問題解決への糸口が掴める瞬間を体感できたかと思います。

伝統的な if文/for文/配列で汚染されたコードは、バグの温床になりやすく、要求仕様の変更にも柔軟に対処できなくなりがちです。これらを使わずに、OOP の原則に沿って記述したコードは、より簡潔で、要求仕様の変更にも柔軟に対処できるのが、体感できたかと思います。

さらに、応用問題に挙げた要求仕様の変更「養子縁組」「再婚」にも対応したいとします。このとき「既存のコードに及ぼす影響」は、設計の良し悪しを判定する客観的な目安の1つになります。

  • if/switch 文で汚染されたコードは「開放閉鎖原則」に反することから、仕様変更の度に改変を余儀なくされ、内包するモジュールを永遠に閉じられないのが分かります。
  • for 文で汚染されたコードは「西暦二千年問題」と同じ病巣を抱え、より良い設計に改編したいと切望しても、メンテナンスの悪夢に魘されることが容易に想像できます。
  • 配列 で汚染されたコードは「バグの温床」を回避すべく課した条件式がモジュールの分割統治を阻害するので、メタボリック症候群を誘発する一因になるのが分かります。


家系図を上下逆さに提示しただけのことですが、自分を起点にすると、子孫はN分木、先祖は二分木と見なしても支障がないことに気付くと、基本課題の応用問題にすぎないことが分かります。このように、言われてみれば「コロンブスの卵」という事例には、枚挙に暇がありません。

要求仕様が提示されたときに、単純な問題解決を無意識のうちに複雑化していたという経験は、どなたも少なからずあるかと思います。出題の際に、問題解決が複雑に見えるような演出をしたのは、それを体感してもらうための意図的なものでした。

受講者のみなさんはまだ、本格的な OOP を習得するスタートラインに立ったばかりです。以前は「要求仕様の変更」と聞くだけで身構えていたのに、やがて「要求仕様の変更」が待ち遠しくなっている自分の変化に気付くときが訪れることでしょう。その瞬間が1日でも早く訪れることを願って、今回のセミナーが少しでもお役に立てたなら、幸いです。

p.s.
「婚姻届問題(家系図問題)」のサンプルコード(改訂版・Python3.1対応)は、「続・ひよ子のきもち」で公開する予定です。

》作業中です《

Last updated♪2009/08/15