Возможно ли достичь идеального кода на реальных проектах | robot_dreams
Для отслеживания статуса заказа — авторизируйтесь
Введите код, который был выслан на почту Введите код с SMS, который был выслан на номер
 
Код действителен в течение 5 минут Код с sms действителен в течение 5 минут
Вы уверены, что хотите выйти?
Сеанс завершен
На главную
Идеальный код: возможно ли достичь его на реальных проектах?

Идеальный код: возможно ли достичь его на реальных проектах?

Разработчики о том, действительно ли стоит поддерживать чистоту кода

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

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

Что такое чистый код

«Одно из главных преимуществ написания чистого кода — когда сам вернешься к написанному два года назад коду, поймешь, что имел в виду»
Яна Ведель,
разработчица в We4Sea B.V.

Хорошо структурированный код гораздо легче понимать и модифицировать. Еще «гигиена» кода уменьшает количество ошибок и упрощает тестирование.

«Чистый код — это код, который легко читать и поддерживать. Чистота кода позволяет значительно сократить время на выполнение будущих задач», — объясняет Роман Ткачик, Senior Software Engineer в GlobalLogic.

Нанизкоуровневых проектах приходится дотачивать алгоритмы до «идеала», чтобы добиться максимальной производительности на ограниченных возможностях железа. На высокоуровневых языках идеала Роман еще не встречал. Он уверен: написание идеально чистого кода требует дополнительного времени и креатива, и его достижение не всегда рационально.

«Чистый код — это код, который легко поддерживать и очень легко расширять, — говорит Роман Бухтияров, Software Developer в Unity Technologies. — Звучит идеально, но на самом деле такого почти никогда не бывает, потому что у нас всегда есть треугольник потребностей, где есть "качественно", "недорого" и "вовремя". Мы должны уметь жонглировать между этими переменными. И "качественно" не всегда в приоритете».

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

Для этого есть отличный инструмент — код-ревью, когда у команды есть возможность дать фидбек.

Существует ли чистый код в реальной жизни

Вячеслав Щупак, Software Developer в Sportradar и лектор курса «Чистый код и паттерны проектирования», говорит, что привычку писать хороший код можно сравнить с чистотой в комнате: сначала кажется удобным, что все разбросано. Но когда начинаешь искать нужный предмет, сразу становится понятно, что целесообразнее было бы потратить пару минут и поставить его на место, чем потом выбросить полчаса на поиски.

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

«Я встречал чистый код на многих опенсорс-проектах. Из тех, которые хочу отметить, — AKKA, Mongo Driver. А также вproprietary-проектах, в которых отлажены процессы код-ревью и TDD»

Вячеслав Щупак,
Software Developer в Sportradar,
лектор курса «Чистый код и паттерны проектирования»

Другие опрошенные нами разработчики менее оптимистичны: так, Виталий Полховский говорит, что за всю свою долгую карьеру в IT имел дело с идеально чистым кодом всего однажды:

«Единственный крупный проект, который я видел и к которому было не подкопаться, — это Spice (разработка Калифорнийского университета, Беркли), программа моделирования электронных схем. Но там не только код, а еще и идеальные математические решения. Несколько лет назад Spice был занесен в список величайших достижений человечества в электротехнике — наряду с законом Ома, правилом Кирхгофа и т. д.».

Техлид Сергей Журавлев уверен: хотя идеально чистого кода не существует, к нему нужно стремиться:

«Хотя идеально чистый код встречается, наверное, никогда, есть код, максимально приближенный к такому. И он есть на проектах, где есть нормальный дев-ревью процесс и настроены стили кода. Перед тем как разработчики вносят какие-то изменения, они проходят проверку. Есть инструменты, которые определяют “тяжелый” или “нетяжелый” код, например. Если все проверки правильно настроены, код будет приближен к идеальному».

Стоит ли переписывать чужой код, если он неидеальный

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

«Писать чистый код со временем становится привычкой. Как ездить на автомобиле — водитель либо вырабатывает привычку и пропускает пешеходов на переходах, либо нет. В этом смысл для кода, который не одноразовый, а будет поддерживаться далее», — говорит Вячеслав Щупак, Software Developer в Sportradar.

Главное задание разработчика — решить поставленную задачу. Роман Ткачик, Senior Software Engineer из GlobalLogic, уверен, что специально «дотягивать» чужой код до идеальности нет смысла:

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

Яна Ведель, разработчица в We4Sea B.V., полностью соглашается:

«Если работает, лучше не трогать :) На проектах бывает такое, что кодом до тебя занимались другие разработчики, ты должен считаться с их предыдущим кодом — а все пишут по-разному. И ты не всегда на 100 % можешь понять код, который писал человек до тебя. Если есть какие-то части кода, в которых ты не уверен, но надо добавить новую фичу, ты тестишь, оно работает — а это самое важное».

Следует также всегда помнить о времени, которое тратится на переписывание кода, и взвесить — стоит ли оно того?

«Почему я не исправлял код, который выглядит, мягко говоря, не очень? Потому что этот код, когда его вызываешь, дает результат. И если я его исправлю, результат будет таким же, просто будет написан лучше. Поэтому смысл его исправлять? Особенно, если это код, за который отвечает другая команда. Или распространенный пример — таску надо сделать за 8 часов, а на рефакторинг уйдет 2-3 часа», — говорит Сергей Журавлев, техлид и лектор курса Java Developer.

Инструменты, которые помогут улучшить код

  • SOLID-принципы и ReSharper от JetBrains

«SOLID-принципы являются фундаментом для написания качественного кода. А ReSharper от JetBrains значительно упрощает процесс выявления и исправления проблемных участков кода, позволяя сосредоточиться на основной задаче», — подчеркивает Роман Ткачик, Senior Software Engineer в GlobalLogic.

  • Black для Python

«Black помогает отформатировать код согласно стандартам (для Python это PEP-стандарты). Еще очень помогает код-ревью — перед тем как выкатить код на прод, коллеги просматривают его и могут посоветовать что-нибудь по оптимизации», — утверждает Яна Ведель, разработчица в We4Sea B.V.

  • SonarQube и покрытие кода тестами

«Мы пользуемся SonarQube, который помогает сканировать код на возможные баги, проблемы, несоответствия культуре кода. Также там можно задать минимальный порог покрытия тестов. Когда ты пишешь тесты, то часто замечаешь, где твой код неидеален. Поэтому наша планка сейчас — 80 % кода, покрытого тестами», — говорит Роман Бухтияров, Software Developer в Unity Technologies.

  • Принципы KISS, YAGNI, DRY, WTF/Minute и инструменты IDE

«Пользуюсь принципами KISS, YAGNI, DRY, WTF/Minute. Инструменты современных IDE сильно помогают видеть лишние вещи, сортировать, группировать, переносить и т. д.», — делится Вячеслав Щупак, Software Developer в Sportradar.

Советы джуниорам

1. «Наилучший способ приблизиться к написанию чистого кода — практика и самообразование. Учите design-patterns и старайтесь обнаруживать их в реальном коде. Читайте статьи, блоги и книги по программированию. Я особенно рекомендую книги Роберта Мартина, такие как Clean Architecture и Clean Code», — Роман Ткачик, Senior Software Engineer из GlobalLogic.

Читайте также: «Чистая» серия и Head First — 10 лучших книг для Java-разработчика

2. «Прислушивайтесь к старшим коллегам. Все придет с опытом. Не пренебрегайте саморазвитием. Следите за новыми технологиями и стандартами, читайте новости индустрии, LinkedIn. Возможно, вышла какая-нибудь библиотека, которая может сократить время на написание кода и улучшить его качество. Как говорят, если есть робот-пылесос, зачем подметать веником :)», — Яна Ведель, разработчица в We4Sea B.V.

3. «Учите принципы SOLID. Их важно разобрать. Эти пять принципов размыты, их можно по-разному интерпретировать и по-разному использовать. Также я бы посоветовал найти 2–3 разработчиков, которые или публикуют свои проекты, или записывают видео на YouTube. Но эти проекты должны быть от специалистов выше вашего уровня», — Роман Бухтияров, Software Developer в Unity Technologies.

курс: Чистый код и паттерны проектирования
Вячеслав Щупак Software Developer в Sportradar
 
Ещё статьи
Экспертки о том, как оценивают кандидатов на нетехнических интервью
Часть 2. Работа с записями: вставка, чтение, изменение и удаление