Вот уже 10 лет, как я занимаюсь программированием и со временем я пришел к одному недостаточно очевидному, но важному выводу. Хорошую программу можно написать только в том случае, если переписывать ее снова и снова. Все программисты люди ленивые, а лень, как известно, двигатель прогресса, и никто не хочет переписывать код, который уже написан. В то же время ежедневно сотни программистов пишут код, выполняющий схожие функции. Так давайте вместе подумаем, почему необходимо переписывать одно и то же несколько раз.
Буквально вчера звонил клиент из города Коломна и жаловался на то, что одна печатная форма работает неверно. Открыв эту форму я тут же узнал свой код и ужаснулся. Ну просто руки хотелось оторвать автору этого кода, если бы не тот печальный факт, что это был мой код, написанный 7 лет назад. Первый очевидный фактор требующий перепысывания кода — это время. Не знаю, что я буду думать через 7 лет, когда я буду смотреть на свой код написанный вчера, но наиболее вероятен сценарий снисходительной улыбки и мысли «Вот ведь лошара, а». Программисты — это люди, которые все время учатся на своих, а иногда и на чужих ошибках, изучают новые приемы и технологии, поэтому перепысывание кода через 3 года ведет к его несомненному улучшению.
Второй фактор, это — языки программирования. Завтра придумают язык, от которого все будут настолько вштырены, что покажется очевидной необходимость переписывания некоторых вкусных кусков тела программы. Когда я учился на первом курсе университета появилась Delphi, но нам было все равно — тогда мы нагибали Turbo Pascal. Когда я закончил университет — никто еще не слышал ни про .Net ни про С#. Очевидно, что мои «гениальные» программы на ТР сразу же захотелось переписать под объектно-ориентированный нативный язык, а потом и под дотнет.
Третий фактор — это заказчики. У меня одного появлялось чувство ненависти к заказчикам после сдачи проекта, когда требовалась «небольшая доработочка здесь и здесь»? Ведь это же «так легко для вас людей-шаманов»… Со временем я понял заказчика, я поставил себя на его место, и все оказалось до банального просто — заказчик и сам не знает, что ему нужно и от своего незнания он так изворачивает техническое задание, что без слез его читать просто невозможно. Совсем другое дело, когда проект уже готов, заказчик трогает его своими чистыми лапами и понимает, что в принципе все не так уж и плохо, если бы только вот в этом месте не сделать еще лучше. А потом здесь и здесь, еще и еще.
Можно провести различные аналогии — раньше люди жили в шалаше, потому что они не умели строить каменные дома и у них не было необходимых технологий и материалов. Они ездили на телеге и сражались мечами из валирийской стали.
Поправьте меня, если я не прав, но я считаю, что добиться идеального результата можно только в том случае, если делать на протяжении длительного времени одно и то же действие — строить дома, производить резину для автомобильных колес или переписывать код. Постоянно рекурсивно-циклически переписывать один и тот же код через определенные промежутки времени, закладывая фундамент «идеального кода» и переходя к следующему уровню абстракции. Возможно, все выше написаннное бред — но это мой чистый опыт, опыт человека с образованием системотехника, который волею судьбы работает не по специальности.
Автор: hisava