Oh 脳《114》GoF を鵜呑みにすると損をします
‖記事一覧‖Oh 脳: after ZERO《其之佰拾漆》
GoF を鵜呑みにすると損をします
♪セミナーの枕で紹介した小ネタ集です。息抜きや話題作りにどうぞ (^.^)
差出人: kotsubu3@gmail.com 件名: 《セミナー通信》受講者のみなさんへ@2009/05/29 日時: 2009年05月29日 17:05:14:JST
------------------------------(きりとれません)------------------------------
時間の都合で割愛した〈GoF〉Command 課題などの、
サンプルプログラムを以下で公開しています。
詳細は、
を筆頭に、各セミナー課題の詳細を順に閲覧してください。
... zap ...
誤解を恐れずに極論すると、OOP を習得したなら、
「if 文/for 文/配列などを使わない」洗練されたコードを記述できるので、
簡潔で見通しが良く、要求仕様の変更にも柔軟に対処できるようになります。
switch 文に伴うハードコーディングの弊害や、
for 文に伴い情報隠蔽に背くコードの散在などの問題点は、
GoF でも指摘されているとおりです。
しかし、C++ に基づくサンプルコードが大半を占めるなど、
GoF を鵜呑みにすると「損をする」場面もあるので、注意が必要です。
Java プログラマーが(Jython を通じて)Python を導入するときに、
Java 流のプログラミングスタイルから脱皮できずにいると、
Python の洗練された特徴を活かせず「損」をしています。
今回のセミナー課題でも
「GoF で積み残された問題を解消する」方法を紹介するとともに、
Java プログラマーにありがちな問題点について考察しました。
... zap ...
たとえば、ポリモフィズム(多様性)に関する誤解のひとつが、
親子関係(クラス継承)を利用することが、その定義であるかのごとくです。
ポリモフィズムと継承とは独立した概念ですが、
あるプログラミング言語の制約で、
クラス継承に基づくポリモフィズムだけが実現可能であったりすると、
それが必須であるかのような誤解をしてしまいがちです。
つまり、目的と手段(what/how)とが逆転してしまい、
それを実現する方法で、その概念を再定義してしまうのです。
デザインパターンについても同様の誤解がよく見掛けられ、
特定のプログラミング言語での実現方法に沿って、
そのパターンの意義を限定して理解してしまいがちです。
... zap ...
また、前回の追加情報もあわせてご覧ください。
〈GoF〉Command 課題を追加して、モジュール構成は以下のようになりました。
$ jython2.5b3 -i TreeEx.py ~/home_Jython/swing/dpJTree dpJTree +-- class
+-- TreeCommand$py.class (7156) |
+-- TreeComposite$py.class (12697) |
+-- TreeEx$py.class (8048) |
+-- TreeView$py.class (10549) |
+-- TreeVisitor$py.class (6365) |
+-- TreeCommand.py (1587) |
+-- TreeComposite.py (3236) |
+-- TreeEx.py (2570) |
+-- TreeView.py (3698) |
+-- TreeVisitor.py (1119) |