[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 11680] Re: 今月号の JavaWORLD 誌にボーリングのスコア 計算プログラム



村山@NETGENEです.

> >   今月号のJavaWORLD誌を見ていましたら、昨日「アジャイルソフトウェア
> > 開発の奥義」で読んだ「ボーリングのスコア計算プログラム」の設計に関
> > する記事が掲載されていました。
> 昨日発売の2005年2月号では設計まで、来月発売の3月号で実装を取り上げる
> そうです。いわゆるオブジェクト指向設計の王道のようなアプローチでスコア
> 計算プログラムを設計しており、以下のようなクラス図が設計の最終形として
> 出されています。
見ました.

いかにもなオブジェクト指向設計/UMLモデリング的な設計だと思います.
アジャイルにしては複雑すぎるし,設計の本質にも触れていません.
現時点では不必要に複雑な割には拡張性も低い.

「シンプルにするのは難しい」ものなんですね.

ただし以前にも言ったもしれませんが,ボーリングの例はあまり良いものでは
ありません.ルールが簡単で,しかも近い将来にルールが変更されたり追加されたり
することはまずありません.処理時間も微々たるものなのでパフォーマンスチュー
ニングも不要.単純に手続き的に実装してもなんとかなっちゃいますし,多少汚い
コードでも力技でデバッグして動きさえすれば十分です.


nクイーン問題を例に取ると,nクイーン問題だけならどっちでもいいです.
オブジェクト指向的でも手続き的でもどっちでも実現はできます.

これが
「「駒」はクイーンだけでなく全てのチェスの駒を使ってよい.将棋の駒などチェス
以外の駒や独自定義の駒を追加しても良い.ある条件では動作が変わるなおしても良い」
というようにnクイーン問題を拡張した「n駒問題」とでも言うべき問題を扱うと
なると,従来手法では不可能ではないにせよ,ちと苦しくなります.こうなると
オブジェクト指向的な設計の方が明らかに有利になるでしょう.


> 設計は正解のない作業なので、同じ問題をいろいろな観点で設計されたものを
> 並べて見ることができるとよいです。
「設計には正解はない.あるのは失敗策だけだ.」
と思ってます.

私も今までどれだけ失敗作を作ってきたことか.