前回で完成したものの、切り良く「10回連載」ということで、今回で終了にしたいと思います。
2011年6月13日月曜日
2011年6月12日日曜日
VC++2010でGUI版TestRunnerを作る その8
「構造化手法」に比べ「オブジェクト指向」では、「どこに関数と変数を置くか」という悩みを強く感じる。
「構造化手法」の場合、関数の上下関係に注目して設計していたが、「オブジェクト指向」では、クラスの役割という概念が新たに加わり、どのクラスがどの機能を持つか考える。ここをしっかり考えておかないと、たちまち複雑怪奇でブクブク太ったメンテナンス性の極めて低い「巨大クラス」が出来上がってしまう。
始めに、どのクラスがどの役割を担うかを考え、役割にふさわしいメソッドとパラメタを所有させ、その上でクラス間の関連を定義していく。
しかし、実装を進めていく過程で、想定していなかった事象が起こり、最初に決めた構造が破綻することがある。その時、あくまで当初設計した構造を維持しようとすると、構造にひずみが生じ、シンプルな設計が維持できなくなる。そこで、「あるべき姿」を考え、構造を変更し、よりシンプルで分かりやすい構造へと変化させる。
その結果、開発者には分かりやすいが、第三者からみると、分かりにくい設計になる可能性があることを、理解しておく必要がある・・・。
「構造化手法」の場合、関数の上下関係に注目して設計していたが、「オブジェクト指向」では、クラスの役割という概念が新たに加わり、どのクラスがどの機能を持つか考える。ここをしっかり考えておかないと、たちまち複雑怪奇でブクブク太ったメンテナンス性の極めて低い「巨大クラス」が出来上がってしまう。
始めに、どのクラスがどの役割を担うかを考え、役割にふさわしいメソッドとパラメタを所有させ、その上でクラス間の関連を定義していく。
しかし、実装を進めていく過程で、想定していなかった事象が起こり、最初に決めた構造が破綻することがある。その時、あくまで当初設計した構造を維持しようとすると、構造にひずみが生じ、シンプルな設計が維持できなくなる。そこで、「あるべき姿」を考え、構造を変更し、よりシンプルで分かりやすい構造へと変化させる。
その結果、開発者には分かりやすいが、第三者からみると、分かりにくい設計になる可能性があることを、理解しておく必要がある・・・。
2011年6月5日日曜日
登録:
投稿 (Atom)