【上級者向け】if文がいらなくなる?インターフェースでポリモーフィズム

こんにちは!

プログラミングスクールkobako(コバコ)スタッフです。

今回はプログラミング上級者向けです。

上級者の方であれば、ポリモーフィズムという言葉を一度は聞いたことがあるんじゃないかと思います。

僕の感覚だと、ポリモーフィズムはなんとなく知っていても実際に使ったことがないという方が多いんじゃないかなぁと思っています。

今日はポリモーフィズムの話はそこそこに、

ポリモーフィズムから知る、今後のエンジニアとしての成長の話をしたいと思います。

ところで・・・

この記事を書いている人はだれ?

子供向けプログラミング教室です!

JavaScriptを使ったゲームプログラミング、ゲーム企画が得意な教室です。

プログラミング教室で実際に使用している、学習成果のある教材をYouTube無料配信しています。

ポリモーフィズムを経験しなかった理由

長年経験してきたプログラマーでもポリモーフィズムを通らなかったプログラマー、エンジニアは多いものです。

通らなかったのはこれまで必要なかった?

そうとも捉えられますが、そういう方はポリモーフィズムを使わずになんとか別の方法で乗り切ってきたんじゃないかと思っています。

if文、条件分岐で乗り切ってきた

ポリモーフィズムのキモとなるメリット。

それはif文が減ることだと思っています。

逆に言えば、if文を使いまくればポリモーフィズムはなくても成立します。

ポリモーフィズムがないと実装できないものというのは基本的にはありません。

ただ、if文、条件分岐を多用すると、ご存知の通り、動作確認が大変になります。

if文の数だけバグは潜んでいるわけです。

if文が減ると言うことは、バグの可能性が減るということでもあります。

ポリモーフィズムを使えば、インターフェースを実装したクラスインスタンスに対して、

とりあえずメソッドを叩いておけば良くなり、

呼び出し元が条件分岐で振る舞いを制御するといったこともありません。

継承で乗り切ってきた

オブジェクト指向のメイン機能である継承。

メソッドのオーバーライドを利用すればポリモーフィズムのように、クラスによって振る舞いを変えることができます。

ですが、継承を使って多くの振る舞いを実現しようとすると、

一部しか要らないのに余計なメソッドまで継承することになり、

また、一部のクラスしか使わない余計なメソッドをスーパークラスに定義するなど、

クラスがぶくぶく膨れ上がって肥大化していきます。

親クラスを複数にわけたいと思っても多重継承のできないオブジェクト指向の壁に追いやられて、

結局ぶくぶくと太ったスーパークラスを頑張って保守する運命にあります。

ポリモーフィズムを使えば、必要に応じてinterfaceを実装するため、スーパークラスが不要になります。

さらに多重にinterfaceをimplementsできるため、多重継承のような動きを実現することもできます。

立ち止まって考えよう

今回はポリモーフィズムの話を出しましたが、

ポリモーフィズムって超便利だし使い方を覚えようね、という話ではありません。

今あなたが書いているプログラムコード、

このif文消えないかな?

この継承しなくて済んだりしないかな?

そういう風に一度立ち止まってみては?という提案です。

if条件分岐と継承は特に改善のチャンスが多いポイントです。

その多くは、今回紹介したようなポリモーフィズムや、Gofのデザインパターンなどが解決する術を持っていたりします。

いますぐ勉強すべき!とは思いませんし、僕自身も薄っぺらい理解でしかありません。

ですが、立ち止まって考えることは今日からできることだと思います。

「if」

こう書き始めたら、一瞬だけ立ち止まって、

if以外の書き方ないかな?

そう思うだけで新しい成長への一歩になると僕は思っています。

kobakoでは上級向けのことはやりません

一応ですが、プログラミングスクールkobakoでは、

ポリモーフィズムやデザインパターンといった上級向けは教えてはいません。

なぜかというと、メリットが伝わらないからです。

いくつものアプリ開発を経て、重要性に気づいてくるものです。

まずは、簡易的な文法でいいので、いくつものアプリ開発を優先してやるべきだと私たちは考えています。

無料体験へのお申し込みはこちらから!

kobakoのゲームプログラミング教材もYouTubeで無料配信中です!

初回の授業料(体験)は無料です。

※現在はオンライン授業でのみ対応しています。通学型ではありません。

Photo by Nick Fewings on Unsplash