Забавная всё-таки штука программирование!
Лет пятнадцать назад разработчик пишет красивую,
изящную и компактную программу. Последователи
добавляют ещё один режим вызова, изменяющий
соглашение о передаче параметров. Ещё через пяток
лет добавляется третий режим с обходной точкой
входа и взятием необходимых данных из файла.
Программа умеет работать как в интерактивном, так и
в пакетном режиме, при этом может оставаться
реентерабельной, не выполняя реинициализацию при
повторном входе, и вызывается в разных режимах из
нескольких прикладных пакетов.
И вот модифицированный код составляет уже 40%
текста программы.
Настаёт момент, когда авторский алгоритм перестаёт
работать для определённой комбинации параметров.
Причём определяется это не тестированием, а
эмпирически по жалобам клиентов. Изрядно поломав
голову и отладчик, приходится в очередной раз
крушить остатки стройной концепции и дописывать
условную принудительную реинициализацию переменных
посреди красивого авторского кода.
Что делает программа? Фигню, печатает PIN-конверты
для банковских карточек. Обычная такая банковская
программа, написанная не самыми бездарными
программерами. У нас тут ещё миллион таких.
Как там у классиков? Если бы строители строили
здания так, как программисты пишут программы, то
первый залетевший дятел разрушил бы цивилизацию.
Верю!