пятница, февраля 28, 2014

Красивый код.

Когда я был чуток помоложе и более агрессивно настроен. Я считал, что красивый код — это код, который работает. Потом я эволюционировал. Мне хотелось делать код, в котором было полно красивых решений. Красивые технические решения, хаки и прочие, как я сейчас понимаю, костыли.

Вечно меняющиеся бизнес требования вносили в мой красивый код множество некрасивых изменений. И только я приводил код в порядок в него вносилась очередная порция говна. В этот момент я стал считать красивым кодом, такой, который возможно быстро изменять. Расширение, модульность, паттерны. Красивый код, написанный мной тогда и сейчас работает отлично.

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

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

Итак, красивый код — это работающий код, решающий бизнес-задачу, реализованный в рамках бюджета в ограниченных временных рамках.
Но в дополнение к этому хочется отметить некоторые опции, которые присоединяются если есть время и деньги:
  1. Написанный простыми конструкциями (понятный для среднего уровня)
  2. Покрытый тестами
  3. Документированный