『現場で役立つシステム設計の原則』の感想
感想
オブジェクト指向を学ぼうとすると大抵、「哺乳類クラスを継承した犬クラスと猫クラスを作りましょう」のような例が出される(乗り物と自動車・自転車など、他にも色々見た)[1]。
当時自分は、こういった例を出されても、「これを業務で考えると哺乳類が何に当たるんだ?」といった具合に、まったく理解できなかった。
そうして途方に暮れて頃、『現場で役立つ』が名著との噂を聞き、ちょうどJavaを学んでいたこともあって読み始めた。
『現場で役立つ』は、オブジェクトという概念について、実際に業務で使うようなコード(例えば、料金の設定)を用いて、具体的に説明してくれるので、とても分かりやすく、感動ものだった[2]。
オブジェクト指向で詰まっている方におすすめできる一冊だった。
業務で活かすことを目指して
本書でオブジェクト指向がある程度理解できたことには感動したが、業務には全く活かせなかった。
なぜなら、業務で触っているコードは『現場で役立つ』で言うところのアンチパターン、トランザクションスクリプト方式でずっと書かれていたから[3]。
それでも、歯噛みして手続き的に書くのは『現場で役立つ』を読んだ意味がない気がするので、なんとかトランザクションスクリプト方式が修正不可能な今の現場でも活かせる部分を探りたい。
防御的プログラミングと契約プログラミング
「防御的プログラミング」は入力や引数を信用せず、受け取り手がチェックする手法。トランザクションスクリプト方式では必然的にこちらになる。
「契約プログラミング」は、定義した型を渡すことでチェックとする手法。オブジェクト指向ではこのような方法が可能になる。
この契約プログラミングという考え方は、トランザクションスクリプト方式でも考え方としてある程度取り込めるのではないかと考えた(DBのNotNull制約など)。
最後に
業務で弄るコードがトランザクションスクリプト方式だと読む意味がないのかといえば、そんなことはない。
むしろ、対比させることで、よりその威力が身にしみて感じられる、そんな一冊だった。
Discussion