オルタナティブ・ブログ > An Agile Way >

アジャイルに行こう!

オブジェクト指向の開放/閉鎖原則

»
今日社内でBertrand Meyerの勉強会やっててびっくりした。
参考:
開放/閉鎖原則について、昔書いた記事。

 

Open/Closeは、変更の論理を、追加の論理にすり替える、ということなのだけど、ぼくがコンパイル言語特有と言ったのは、Close=触らない=固められる、ということが名前にまで影響していると気づいたからです。それが、ポリモフィズム、あるいは動的束縛のトリック。
しかし、それをぶち壊したのが、ベックで、三つの兄弟を発見するまで親をつくるな、と。あくまで、帰納的に発見せよ、無用な抽象化をするな、と。
ところが、もとを正すとMeyerはソフトウェア開発の第一原則は、
  • "Build for Change"

  • という。Beckは、
  • "Embrace Change"

  • という。同じでありながら、この違いわかるかな。
    さらに、Duck Typing。あらかじめ用意した名前を持った何かしらの共通の振る舞いすら、いらない。帰納的な世界の発見が、開放/閉鎖原則を自然な形で支援している。

    つまり、開放/閉鎖原則は名前が今では悪くて、変化に備える名前になっている。変化に対応する方向の名前、もしくは、人間の認知順に則した、帰納的、発見的世界感を表現する名前に変えたらいいと思います。

    あるいは、開放閉鎖原則は、「言語設計者」や「フレームワーク設計者」の原則とすべきなのかも。 浦嶌くんが、「どこかを触らなくても、置いておけば動作が変わる感じ」と表現したのは、まさに言えてる。

    Comment(0)