余録

セミナー受講者の中にも(コンサルティングの現場でも)同様のパラダイムシフトに困惑する場面に遭遇します。この傾向が、同様の著書に起因するのか定かではありません。ただ「そこに書かれてあることを鵜呑みにせず」批判的な目で見る姿勢も必要です。それはもちろん、この記事にも言えますが…。(^^)
switch でも問題解決できるなら、OOP を導入するまでもなく、SP でも事足ります。それが目的ではなく、手段のひとつに過ぎないことを忘れる滑稽さには「ワインバーグの金槌の法則」が見事に当てはまります。

《関連記事》

《こちらに移動中です》

受講者への課題

《余録》セミナー教材の中には「反面教師」として引用しているものも少なくありません。たとえば…

参考文献
なぜ、あなたはJavaでオブジェクト指向開発ができないのか―Javaの壁を克服する実践トレーニング

なぜ、あなたはJavaでオブジェクト指向開発ができないのか―Javaの壁を克服する実践トレーニング

一見すると、クラス/メソッドを使って記述してあるので、OOP を実践しているかのように錯覚します。しかし、よく見ると「クラス/メソッドの本体に、SP を踏襲したコードの断片を押し込んだだけ Oh 脳《19》うしとカエル - 続・ひよ子のきもち」という箇所が少なくありません。皮肉にも「なぜ、オブジェクト指向開発ができないのか」を著書が実践してしまう結果になっています。確かに、Java の壁は克服できるかもしれませんが、残念ながら、オブジェクト指向の壁は克服できそうにもありません。

《課題》次のメソッド @ の本体を多重 if 文を用いないで、実現してください。□

## ---------- ISBN-10: 477412222X, pp.76-77
class Judge:
    def judgeJanken(self, p1, p2):
        ...

問題点だけを示すために、同じ機能を Python で実現したコードの断片を提示します。これは「反面教師」ですから、良い子のみなさんは真似をしないように。(^^)

... zap ...
SP では、2人の対戦では2重の条件分岐が、3人の対戦では3重の条件分岐が、そして、n人の対戦ではn重の条件分岐が必要になり、このアプローチがすぐに破綻するのは明らかです。では、OOP では、この問題をどのように回避するのでしょうか。この続きは、セミナー会場で ...φ(^.^)