スーパー ≠ ベース

新しい現場で、Super なんちゃら、というドメイン用語があって、それは元のなんちゃらに対して「より高機能で汎用性が高い」とか、もっと「広い範囲」とか言う意味なのだけれど、それが OO の super と意味が違うので紛らわしいから止めるべきだ、みたいにな話がされていて、聞き耳を立ててしまいました。

んー。一般用語 と プログラム内用語が混じるとややこしいから・・と言うのなら分かるのですが、どうも「基底クラス」の別名が「スーパークラス」で、基底クラスの感覚では「機能があまり無い」「ベーシックな」みたいなものだから、「感覚的に逆じゃね?」と言う話の流れで。

実装継承での概念と型継承での概念を、単にプログラミング言語ごとの呼び名の方言みたいに捉えてしまっているのに、なるほどなぁ・・と思ってしまったのは、こちらのコードがほとんどポリモーフィズムを使っていない(というか、ポリモーフィズムと差分プログラムが区別されていない)からで。

この現場は優秀な技術者が結構いっぱいな現場というイメージ(オライリーとかピアソンとか中田先生のコンパイラ本があちこちに転がってたりする職場)だけに、「世の中、まだまだ、そんなもんなのかなぁ」と思ってしまったり、OOPの理解度の物差しとして、実装継承と型継承を区別できるか を使えるかな、と思ったり。

雑談上の話なので、ついうっかりおかしなを言ってしまった(よくあること)・・というだけなのだと思うけれど、でもコードはちょっとアレゲなのは事実なのですよね(こちらはいろんな人が関わっての超短期間開発してるから・・というのは大きいとは思う)。

ちょっと暗雲。