Copy-pasting code is a source of bugs. By employing in our programs abstraction mechanisms such as functions, classes, types, decision tables, domain-specific languages, and databases, we can abstract common elements into parameterized reusable functionality. However, abstraction has its cost. Its early gains are large, but eventually the benefits turn negative and the code becomes less comprehensible and maintainable. Deciding when abstracting is appropriate is what makes programming an art.
Index Terms:
abstraction, function, class, generics, types
Citation:
Diomidis Spinellis, "Abstraction and Variation," IEEE Software, vol. 24, no. 5, pp. 24-25, Sep./Oct. 2007, doi:10.1109/MS.2007.127