作成日 2012/5/26
最終更新日 2012/5/26

問題2.15(問題タイトル:アンチパターン)

オブジェクト指向設計についての問題(中級レベル)です。

問題タイトル:アンチパターン
重要度:★★★☆☆(普通)
難易度:★★★☆☆(普通)


1.問題
2.解答・解説
3.参考文献


1.問題

問題タイトル:アンチパターン
重要度:★★★☆☆(普通)
難易度:★★★☆☆(普通)

問題:以下はアンチパターン名前と説明もしくは特徴の一覧である。a〜gをア〜キに正しく関連付けよ。

 a.コピー&ペーストプログラミング
 b.肥満児
 c.機能的分解
 d.車輪の再発明
 e.溶岩流
 f.スパゲティコード
 g.文書軽視


 ア.オブジェクトのメソッドに引数がなく、グローバル変数やクラスの静的変数を操作している。
 イ.既に知られている解決方法などを採用しない。
 ウ.プロトタイプのソースをそのまま流用した時に起こりやすい。
 エ.ブラックボックス的再利用ではなく、ホワイトボックス的再利用を行っている。
 オ.ドキュメントや設計書がなく、バックアップ、不測事態への考慮がない。
 カ.一つのクラスに大量の(60以上)属性や操作がある。
 キ.関数のような名前がついたクラスがある。

問題文終わり

このページのトップへ












注意:これ以上、下にスクロールすると解答・解説が見えちゃいます。

2.解答・解説

解答:a-エ、b-カ、c-キ、d-イ、e-ウ、f-ア、g-オ
※部分点は存在しませんよー。1つでも間違えたら0点です。

解説:
 特にオブジェクト指向設計・プログラミングに関する部分を解説します。

 a.エ
 コピー&ペーストプログラミング
 まあ、この名前は一度は聞いたことはあるのではないでしょうか?
 部品化が適切に出来ていない場合に起こりえます。
 まあ、難しい場合もあるのですが・・・。

 b.カ
 肥満児
 機能の詰め込みづぎです。この場合、多くの場合、モジュールの強度が悪くなっています。

 c.キ
 機能的分解
 データ中心で設計されていません。この場合も、多くの場合、モジュールの強度が悪くなっています。

 d.イ
 車輪の再発明
 勉強不足ですね。
 今回はアンチパターンに関しての問題ですが、デザインパターンについても勉強しましょう。また、既にあるライブラリ(例えばlog4cpp)のソースを見て、理解すると勉強になることがあります。

 e.ウ
 溶岩流
 オブジェクト指向設計・プログラミングとしてコメントすることは特にありません。

 f.ア
 スパゲティコード
 ちょっと難しかったかな?
 この場合、モジュール間の結合度が悪く(強く)なってしまっています。
 そうすると、修正やテストに多くの工数がかかるようになってしまいます。

 g.オ
 文書軽視
 オブジェクト指向設計・プログラミングとしてコメントすることは特にありません。
このページのトップへ

3.参考文献

 このページを作成する際に参考にしたページや、もっと勉強したい人向けの資料です。

番号

リンク先の名称

リンク先の説明

リンクした日

1 デザインパターンとアンチパターン - だるまのエクセルVBA デザインパターンとアンチパターンを紹介しています。 2012/5/26
2 オブジェクト指向とモジュールの凝集度、モジュールの結合度 - だるまのエクセルVBA オブジェクト指向とモジュールの凝集度、モジュールの結合度の関係を説明しています。 2012/5/26

番号

著者名

書籍名

ISBN

1 W.J. ブラウン (著), 3,Hays W. McCormick (著), Raphael C. Malveau (著), Thomas J. Mowbray (著), William J. Brown (原著), 岩谷 宏 (翻訳) アンチパターン―ソフトウェア危篤患者の救出 978-4797321388

Prev Up Next  Top
このページのトップへ


このページの利用によって発生した、いかなる損害について、このホームページの作成者は責任を負いません。
このページの間違いや嘘を見つけた方、このページに書いて欲しい情報がある方はメールをお願いします。

Microsoft 、Windows 、Visual Basic および Excel は米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
ここではExcel® をエクセル、Visual Basic® for Applications をVBAと表記する場合があります。
Mac 、Mac OS 、Mac OS X は米国Apple Computer,Inc.の登録商標または商標です。
その他、社名および商品名、システム名称などは、一般に各社の商標または登録商標です。

このホームページの作成者はこれらの会社とはいっさい関係がありません。