クラスの粒度

ひがさんのところでいろいろやりとりされてますね。

今目の前にあるクラスをほどよい粒度でとめておくってのはその人の「その時点」のセンスになるわけですが、センスの共有はできないと思います(自分の感覚が数ヵ月後違ってるかもしれないというのに、ましてや他の人と共有し続けるのは無理だと)。一人で最初から最後(これは数年後のリニューアルも含めて)まで担当するってのでは対応できないものを作る機会がふえているにもかかわらず、そういった「特定の人のその時点でのセンス」というのに依存した開発をしているということかなと。コードをチームの共有物とし、誰でもどっからでも見れる・変更できるようにするのが現在の開発方法論では必要だと。

「単一責務」という切り口でできる限り分割するというのは、周りから見て「これはまだ2つのことをやってない?」というレビューができるので客観性が増していいと思うんだけど。

既存のオブジェクト指向開発論の落とし穴は、この「ほどよい」という感覚を共有できるとしたことではないかなと思ったりした。いろいろな理論武装で「ほどよい」というのを定義しようとしたが結局は人それぞれの「ほどよい」感があり、それは共有できなかったってことじゃないのかな。

追記 ひがさんのところへコメントされてる方もそういう感じがしますが、「構造化」という方法論の呪縛が結構あるのかなと。「ほかのところでも共有するコードを分割する」というものの呪縛って結構あるんじゃないかな。「リファクタリング」では「意味のある処理にはちゃんと名前をつけて分割する」というのがうわたわれていて、別に共有しているかしてないかはもう指針ではなくなってるんだと思うんだが。