「なんとかManagerクラス」から漂う危険な臭い

http://www.radiumsoftware.com/0603.html#060330
http://c2.com/cgi/wiki?CodeSmell
メモ.

それこそ "Manager" という名前が相応しいかもしれないが,それはひとつのクラスに機能を集約し過ぎている。(中略)いわゆる "code smell"は,他にも幾つか見つけることができる。例えば "Object", "Handler", "Data" などがこれに含まれる。

「getter/setterの多用」というのもありかな.特にUMLモデラーに顕著に見られる.


http://en.wikipedia.org/wiki/Code_smell

  • Inappropriate intimacy - a class that has dependencies on implementation details of another class.
  • Refused bequeath - a class that overrides a method of a base class' such that the contract of the base class is not honored by derived class. See Liskov substitution principle.

あー.見たことあるな.嫌と言うほど.....

おそらく日本ではLiskov substitution principleを理解している人の方が少ない.LSPを知らない継承は継承の誤用以外の何物でもないのだが.