Code Complete1人読書会 その7

第7回目。

引き続きクラスの話。
最初はちょっとした話なんですが。

クラスのメンバデータが7個を超えたあたりから、クラスを批判的に見る。
《Code Complete 第2版 上, 2005/03/28, 日経BPソフトプレス, p.174》より

メンバデータが多すぎる場合は、クラスを分割することを考えた方がよいかもね、という話。1つの参考として。


次はけっこう目から鱗だった話。

 特に目を引くのは、再利用可能なクラスを作成するというNASAの基本方針に、「再利用のための設計」が含まれていないことである。
《Code Complete 第2版 上, 2005/03/28, 日経BPソフトプレス, p.188》より

ん??基本方針が再利用可能なクラスを作成することなのに、「再利用のための設計」含まれていないってのはどーゆーこと??
大抵Javaのようなオブジェクト指向言語を使う場合って、設計時に出来るだけ再利用可能なようにしたいと思いながら設計するもんだと思ってたけど*1
NASAの考えは、以下らしい。

NASAは、プロジェクトの最後に、再利用できそうなものを特定する作業を行っている。そして、クラスを再利用するために必要な作業を、メインプロジェクトの最後の特別プロジェクトとして、あるいは新しいプロジェクトの最初の作業として実施している。
《Code Complete 第2版 上, 2005/03/28, 日経BPソフトプレス, p.188》より

なーるほど。最初から再利用を意識して設計するのではなく、作り終わったものの中から、再利用できそうなものを探して、それに対して修正を加えていくことで、他プロジェクトでも使いやすい部品を作っていくっつー話ね。
最初から再利用を意識してしまうと、往々にして必要以上に複雑な機能が作りこまれちゃったりしがちだけど、それを防ぐ為にも、「再利用のための設計」はあえて取り上げないわけだ。
メインプロジェクトの最後の特別プロジェクトとして実施するのはちと厳しそうだけど、次のプロジェクトの最初の作業として実施するってのは意外と現実的でいけるかも。



今回でクラスの話はいったんおしまい。

*1:でも、実際は本当に再利用できるコードなんて、なかなか出来ない。。