Начал тут вчера читать книгу Саттера и набрёл на рекоммендацию, где он говорит о том, что лучше всего писать код, чтобы он предусматривал его простую расширяемость. Т.е. решение не должно ограничиваться конкретной сиюминутной задачей, а быть несколько более общим. Решение может получиться чуть более длинным, но вполне вероятно, что более логичным и простым для понимания.
Конкретно там он описывает шаблонные функции.
Вспомнилось, что рядом недавно С.Губанов "опускал" шаблоны (с чем я естественно не согласен), которые есть один из лучших методов расширения алгоритмов, но возник вопрос:
какие ещё методы "расширяемости" программ можно привести?
Возможно использование интерфейсов/наследования? Что ещё?