どう伝えたモンでしょう

ちょっとだけアジャイルソフトウェア開発の奥義みたいな話(・∀・)


カプセル化や差分プログラミングをしていたり、UMLを書いているから、自分はオブジェクト指向しているんだって言う人達がいるわけですが。
いざ、そういう人達が実装しているものを見てみると、非常に脆い設計だったり、扱いにくい設計だったりする事が多かったりして(´・ω・`)


10年前のオブジェクト指向かよ!っというか、それはオブジェクト指向じゃないよというか。*1
まあ、この辺を勘違いしているかどうか判別するには、別に実装を見る必要も無くて、次の辺りを確認すればだいたい分かるんですけどね。


カプセル化」や「差分プログラミング」という言葉は知っていても、「オープン・クローズドの原則」という言葉は知らなかったりする。
あるいは、ユースケースの作業で意味があるのは、UMLユースケース図の「絵を描く」ことではなく、ユースケース記述を「詳細に」書くことである、っていう認識があるかどうか。*2


で、そういう人達に、オブジェクト指向の原則やデザパタの嬉しさをどう分かって貰うかというのが課題で(´ω`)


SRP*3とかISP*4だとか、継承よりコンポジションを使えだとか、その辺の話は実感して貰いやすい気もしますけど。
なぜDIP*5するのかとか、その辺の意義を分かって貰うのはなかなか難しいですね(´Д`)
説明が下手なだけかもしれないけど(´Д`;)


デザパタとかも、最初からそれありきではなくて、自分で同じような事をやってきた経験があった上でパターンというものに出会わないと、嬉しさや意義が分かりづらいんじゃないかと思いますしね〜。


レイヤの概念や、なぜ階層化した設計にするのかを理解して貰うのにも苦労していたり(´ω`)

*1:っというか、なぜOOな設計にすると嬉しいのか、それを理解せずに形だけOOしている気がすると思ったり…。

*2:ユースケース記述っていう言葉を知らないケースも…(゚Д゚)

*3:単一責任の原則

*4:インタフェース分離の原則

*5:依存関係逆転の原則