Код
#статьи

Что такое плохой код и что с этим делать

Что такое качество кода, как его улучшить, и почему иногда хороший код — это плохо. Статья подготовлена на основе нашего вебинара с Глебом Михеевым.

 vlada_maestro / shutterstock

ВРЕМЯ ПРОСМОТРА

1 ч. 19 мин.

ВРЕМЯ ЧТЕНИЯ

4 мин.

ЭКОНОМИЯ

1 ч. 15 мин.

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

Признаки некачественного кода:

  • в нём тяжело ориентироваться;
  • части, которые можно написать двумя строчками, написаны десятью;
  • по названию функции нельзя понять, что она делает (xyz, function, n);
  • если в него что-то добавить, остальное перестанет работать.

Вот такой логикой, как на картинке, всё-таки лучше не пользоваться: если программа работает, это ещё не значит, что с ней всё в порядке.

Чем грозит проекту плохой код

На первый взгляд, плохой код — не катастрофа. Программа же работает, разве это не главное? На самом деле он приносит много проблем, особенно в долгосрочной перспективе. И вот почему:

  • чтобы внести изменения в некачественный код, нужно много времени и стоит это дорого, причём со временем цена и продолжительность только увеличиваются;
  • добавить что-то новое тоже сложно;
  • код непредсказуем — вы никогда не знаете, что и когда перестанет работать;
  • командный дух падает, если людям приходится работать с такими шедеврами («Да кто это вообще писал?!»).

В итоге скорость разработки снижается, сроки удлиняются, стоимость изменений растёт. Если это критично для потребителя или заказчика, то плохой код может похоронить проект.

Как писать хороший код

Чтобы писать качественный код, надо знать, что он из себя представляет. Вот его основные качества:

  • код легко читается, у него чёткая структура, в ней нет путаницы;
  • он легко поддерживается: небольшие изменения не вызывают желания написать его заново;
  • его можно расширять;
  • код прошёл тестирование;
  • он документирован;
  • производителен.
Журналист спрашивает программиста:
— Какой код плохой?
Программист:
— Без комментариев.

Комментарии действительно очень важны, чтобы код легко читался. Это поможет не только другим программистам, когда они будут работать с вашим кодом, но и вам в будущем.

Подробнее почитать об этом можно здесь: Как писать техническую документацию для программ на C#

Вот пять действий, которые улучшают код.

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

    Еще есть общепринятые стандарты оформления кода и даже платформы для программирования, которые вам подскажут, как этим стандартам следовать. Это важно и при работе в команде, и в том случае, если вы пишете код в одиночку.
  2. Рефакторинг. Это переработка кода программы без изменения её поведения. То есть сначала у вас креативный процесс: вы пишете так, чтобы программа работала, а потом «убираете за собой», приводите код в порядок, к нужному виду. В качестве бонуса рефакторинг помогает переосмыслить архитектурные решения программы.
  3. Типизация. Поясним на реальном примере. Разработчикам одной игры игроки писали о проблемах, а потом вдруг перестали. Сначала было разработчики обрадовались: всё настолько круто, что проблем нет. Позже оказалось, что в игре изменился юзернейм на никнейм, и из-за этого перестала работать форма обратной связи: жалобы просто не отправлялись.

    Типизация (декларирование типа данных) поможет избежать таких ошибок и упростит поддержку и рефакторинг.
  4. Код-ревью. Это когда вы с коллегой проверяете код друг друга и даете друг другу фидбэк. Такая практика помогает избежать глупых ошибок и непродуманностей. Кроме того (и это тоже важно), вы в курсе того, чем занимается другой человек, и вам не приходится дублировать функции. Замечательный бонус — этот метод поможет мягко адаптировать новичков.
  5. Автоматические тесты — о них мы поговорим чуть подробнее. Это простые программы, которые запускают код с разными параметрами и сверяют с уже известными результатами. Какие бывают тесты?
  • Unit тестируют отдельные части программы.
  • e2e тестируют систему в целом.
  • Нагрузочные проверяют, насколько хорошо программа справляется с нагрузками.
  • Скриншотные сравнивают скриншоты до и после, реагируют на изменения.
  • Прочие: мутационные, пенетрационные…

Мой код и правда так плох?.. Не-е-е, это тесты не правы!

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

Есть и другие способы улучшить код (например, парное программирование). Самые лучшие результаты можно получить, если использовать сразу несколько способов: так надёжнее.

Если хотите улучшить свой код, то советуем почитать эту статью: Ужасы чужого кода: как найти смысл и не умереть. Там много полезных советов и личного опыта.

Когда хороший код — это плохо

Мы сейчас столько говорили о том, как важен качественный код, а теперь заявляем обратное? Да. Иногда хороший, «правильный» код — это не так уж и замечательно.

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

Чтобы понять, насколько важна скорость, представим себе двух программистов: Петю и Васю. Один обстоятельный, педантичный, а второй — его полная противоположность. Обоим пришла в голову идея сделать какой-то продукт. Петя сел, придумал архитектуру и начал делать хорошо и неторопливо. И делает уже полгода. Вася сделал всё за месяц, с ошибками, багами — но сразу запустил, нашёл клиентов, сделал второй релиз… В итоге через полгода, когда Петя только доделал свой замечательный продукт, у Васи уже много пользователей и название продукта уже на слуху. А часть багов он почистил во втором релизе.

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

Как тогда быть? Плохой код — плохо, хороший — тоже не всегда хорошо… Дело вот в чём:

Качество кода — это параметр, который мы меняем в зависимости от цели.

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

Если же вы делаете лендинг, который просто расскажет о временной акции и соберёт мейлы в базу данных, то тут уже важна скорость. Вы знаете, что, как только акция закончится, ваш код больше не понадобится. Дорабатывать и поддерживать его не нужно, и другие разработчики его использовать тоже не будут — тут достаточно написать быстро и проверить, что он работает, остальное не важно.

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

Изучайте IT на практике — бесплатно

Курсы за 2990 0 р.

Я не знаю, с чего начать
Научитесь: Профессия Python-разработчик Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована