ここしばらくC++コードをこちょこちょ書いているのであるけれども、テンプレートはコードの抽象度を高める上で必要だなぁと再認識した。
C++が持つオブジェクト指向にしてもやっぱり抽象度を高める機能だし。抽象度を高めるというのはコードの再利用性を高めるということでもあるので、のちのちのことを考えるとやっぱりできる限り抽象度は高めておいたほうが良い。
さらにポリモーフィズムについて気づいた点を箇条書きにしてみると
- テンプレートは静的ポリモーフィズムを提供する。静的とはコンパイル時までを指す。
- 静的ポリモーフィズムを追求するとコードの抽象度が高まる。抽象度が高まるということは自由度が高まるということでもある。
- 複雑な条件判断が発生するコードはポリモーフィズムにより条件分岐を置き換えられないか考える。
- 動的(仮想関数や継承を使用した)ポリモーフィズムなコードは静的ポリモーフィズムに置き換えられないか考える。
- 静的ポリモーフィズムのほうが動的ポリモーフィズムよりもコード抽象度が高くなる。
静的ポリモーフィズムと動的ポリモーフィズムを適切に使用したコードは抽象度および実行速度が上がる。再利用もしやすくなる。