Хороший код — код, которого нет. Зачем он нужен?

Часто я слышу, что хороший код — это такой, который легко читается. Зачастую, это лишь один из многих критериев.

Хороший код — код, которого нет. Зачем он нужен?

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

  • Код легко модифицировать. При правильном проектировании и архитектуре расширение кода обходится без особых временных и технических затрат. Каждая сущность, которой мы оперируем при разработке, должна отвечать только за свою часть функциональности.
  • Код должен быть предсказуемым и надежным. Хороший код и тесты всегда рядом.
  • Защищенный код.
  • Хороший код — код, которого нет. Код не стоит дублировать, а часть общих вещей должна остаться на уровне абстракций.
  • Читаемость кода. У каждого разработчика есть собственный стиль написания, а уровень чтения уже зависит от нашего опыта. Все мы хотим писать простой, красивый и лаконичный код.

В 1961 году появился термин «запахи кода» или «код с запашком». Он обозначает группу правил и рекомендаций, которые чётко определяют, пора ли делать рефакторинг. Правила бывают как и общей направленности, так и для конкретных языков программирования.

Стоит ли писать чистый код?

По личному опыту – чем хуже написан код, тем скорее к нему придётся вернуться и переписывать его. На крупных проектах это могут быть десятки файлов, хоть и не особо больших.

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

Также не стоит писать совсем уж плохо временный функционал или служебные скрипты, которые вы планируете запускать 1-2 раза. Лучше не кидаться в крайности и найти золотую середину между количеством затраченных часов и чистотой кода, тогда рефакторинг вам понадобиться нескоро.

Как научиться писать чисто?

Для того чтобы писать чисто недостаточно просто прочитать книжку, есть ряд пунктов которые нам в этом помогают:

1) Инструмент

Удобный инструмент — это половина успеха. IDE (интегрированная среда разработки) не только дополняет код на лету, но и подсказывает места, которые стоит привести в порядок.

2) Строгие рамки

Начните разработку небольшого проекта, который решает конкретную проблему.

3) Анализ решений

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

4) Практика

Чистый код — это результат большого опыта работы над различными проектами.

Не забывайте, что чистый код — это утопия. Важно верно оценить свою затраты на чистый код и его продуктивность на проекте.

1313
11 комментариев

Комментарий недоступен

3
Ответить

Код легко модифицировать. Есть.

Код должен быть предсказуемым и надежным. Есть.

Защищенный код. Неприменимо. (О чем это вообще?)

Хороший код — код, которого нет. Ничего лишнего там не написано.

Читаемость кода. Читается легко кем угодно, есть комментарии.

Судя по статье, код довольно хорош.

2
Ответить

С интересом прочел, только не понял что такое "Защищенный код", я не сталкивался с такой характеристикой, сначала подумал что это = надежный, но надежный код выше уже есть.

Про термин Code smell написано что он "обозначает группу правил и рекомендаций, которые чётко определяют, пора ли делать рефакторинг", думаю стоит добавить ссылку на список этих правил, если она есть, в гугле очень много сеошных сайтов если просто загуглить сам термин, я после пары минут сдался)

Прочтя список "Как научиться писать чисто?", я вспомнил что много полезного я узнал читая чужой, хороший код на гитхабе.

1
Ответить

Кстати, блогеров программистов на виси почему-то мало. Больше статей - хороших и разных!)

1
Ответить

Есть еще оптимизированный(быстрый) код. Зачастую он бывает совсем не читабельный, и это совсем не означает, что он плохой и его придется переписывать.

Ответить

min файлы не про это

Ответить

Спасибо. Отличная статья!

Ответить