.. SPDX-FileCopyrightText: 2024 The IceTray Contributors .. .. SPDX-License-Identifier: BSD-2-Clause Blend static and dynamic polymorphism judiciously ------------------------------------------------- Both static and dynamic polymorphism have their uses. Don't overuse one when the other would be more appropriate. Advantages of dynamic polymorphism """""""""""""""""""""""""""""""""" * Manipulation based on superset / subset relationship: A function that works on base objects also works on derived objects. * Dynamic binding and separate compilation: Code can be compiled separately. So if one derived class changes, only it needs to be recompiled. * Binary interfacing: Modules can be linked statically or dynamically. Advantages of static polymorphism """"""""""""""""""""""""""""""""" * Manipulation based on syntactic and semantic interface: Interfaces are implicit, so any type (or type substitution) that fits a given syntax will work. * Static type checking: All types are checked statically. * Efficiency: Compile-time evaluation allows increased optimization.