Что программисту делать с чужим говнокодом?

Поговорим о вечном — о говнокоде. Ну любят программисты обсуждать, какие товарищи до них творили этот вторпродукт. Так уж сложилось, ковыряться в написанном кем-то коде, еще и не очень хорошо написанном — больная тема.

Почему говнокод нельзя удалять

Первое, что нужно понять — чужой говнокод обычно является единственным источником информации о том, как работает система. Документация часто бывает утеряна или не актуальна. Люди, которые это писали, давным-давно уволились или как минимум забывали, что они вообще там делали. Так что еще раз: старый код — единственная исходная информация о том, как ведет себя система.

Поэтому когда человек приходит на новый проект, и в порыве энтузиазма выкидывает все и начинает переписывать заново — это чревато проблемами. Как минимум потому, что вы теряете всю информацию, которая была в системе до вас. Даже есть такое понятие, как «Синдром второй системы». Когда старый «говнокод» выкидывается полностью и заменяется на нечто сияющее и сверкающее. Так вот, вторая система всегда по всем параметрам хуже, чем первая.

Что с этим делать? Ничего нового я вам не скажу, делать нужно рефакторинг.  Взять старую часть кода, разобраться в ней (как она работает и для чего нужна), преобразовать, привести в нормальный вид. Если вы понимаете, что эта часть кода не нужна, смело ее удаляйте. Но только после того, как обсудили с заказчиком, и заказчик сказал, что эта часть бизнес-логики больше не используется. Но не раньше!

В каких случаях исправлять старый код

Если старого кода всего пару страничек, то, собственно, и проблемы никакой не возникает. Вы быстренько срефакторили и закрыли эту тему. Но если это энтерпрайз проект на сотни мегабайт исходников, в которых просто черт ногу сломит, что тогда?

Когда нужно рефакторить? Исправляем код только в следующих трех случаях:

  • если вам нужно добавить новый функционал, и это невозможно сделать, пока вы не срефакторили определенный кусок кода;
  • если вы нашли ошибку и не можете ее исправить, потому что «говнокод», в этом случае тоже рефакторите;
  • если вы точно разобрались, как это работает и приводите данную часть кода в человеческий вид.

Что нужно рефакторить? Пользуемся «Правилом третьего раза». Допустим, для выполнения определенного функционала вам нужно было залезть в кусок старого кода. Вы залезли, что-то чуть-чуть поправили, но ничего серьезно не переписывали. Возможно позже вам пришлось залезть в этот же кусок кода еще раз и что-то поправить. Если же в будущем вам придется залезть в этот же участок третий раз, значит нужно полномасштабно в нем разобраться и рефакторить. Потому что если вы в третий раз возвращаетесь к этому месту кода, значит это непосредственно связано с вашей задачей и именно этот кусок кода вам придется постоянно править.

Подытоживая сказанное

Что делать с чужим говнокодом? Во-первых, любить! Только там есть информация о работе системы. Во-вторых, ни в коем случае не стирать все одним махом, а рефакторить. В третьих, рефакторить только те части, которые вам нужны, а не весь код. В четвертых, исправлять по правилу третьего раза — только если возвращаетесь к определенному месту кода в третий раз.

Никаких других вариантов работы с говнокодом больше нет. Если кто-то предлагает вам все выкинуть и переписать заново, вероятно это не очень квалифицированный специалист. 

 

Автор: Сергей Немчиснкий