hitode909の日記

以前はプログラミング日記でしたが、今は子育て日記です

ペンギン許さん

たとえばペンギンクラスを作るとき、まずペンギンクラスを定義する。と言うと、いや待ってください、ペンギンは鳥ですから、鳥から継承させましょう、とかそういう話になる。
継承すると、ポリモーフィズムという技を使えて、鳥を受け取る関数に鳥でもペンギンでも渡せるようになったり、鳥の機能をペンギンが獲得して、足の数は?とか聞くと2とか返ってくる。
便利だけど、鳥でもペンギンでも共通して足の数を知りたいアプリケーション以外でそういうことをし始めると、きりがなくなって、哺乳類クラスが登場したり、生命の樹みたいになって最悪の継承ツリーが出来上がる。
アプリケーション的に意味ない限りは、クラスを作ったり継承したりしてはいけない。そのうち役立つかと思って作りたくなる気持ちは分かるけど、必要になってから作れば良い。大体の場合、後世の人たちが、このクラスなんであるんだろって迷うのにかかるコストの方が高い。