Сегодня программирование — как правило, продукт совместной деятельности. Основу нового крупного проекта обычно создают наиболее грамотные в команде программисты, которых называют архитекторами. Они готовят проектную документацию будущего ПО и определяют стандарты написания кода и построения архитектуры. Затем, на основе этой документации, другие программисты приступают к разработке отдельных компонентов.
Почти все системы, работающие в режиме реального времени, требуют реализации быстрых функций. Поэтому важно оптимизировать и упорядочить базы кода. В этом случае упрощается реализация новых функций другими разработчиками. А новые члены команды смогут быстрее включиться в работу над проектом.
Поэтому прежде чем вносить изменения в базу кода следует подумать о последствиях и предотвратить их заранее, следуя этим советам.
Всегда используйте понятные названия
В любом языке программирования есть несколько предопределенных ключевых слов, которые нельзя использовать в названиях. Например, в языке C имеется 32 специальных ключевых слова, в том числе if
, for
и return
. Библиотеки и фреймворки придерживаются различных соглашений об именах. Например, в стандартной библиотеке языка C есть такие функции, как printf
, sprintf
и прочие. Для отдельных элементов исходного кода можно выбирать любое название, за исключением ключевых слов языка программирования и библиотечных API.
При этом нужно использовать осмысленные и понятные названия. И это относится не только к переменных. Наиболее подходящие названия нужно выбирать и для классов, областей имен, пользовательских типов данных, функций и даже файлов. Если они названы непонятно, то другим программистам, возможно, придется проанализировать весь модуль.
Помимо принятого по умолчанию соглашения об именах, всегда полезно поддерживать собственный вариант соглашения, чтобы улучшить читаемость исходного кода. Например, можно использовать глагол в качестве префикса для каждого логического значения. В этом случае hasExtraParameters
подразумевает содержание логического значения.
Комментируйте при необходимости, но не постоянно
В исходом коде разобраться не всегда просто, даже если отдельные элементы имеют понятные названия. Кроме того, базы кода могут включать временные решения, а также сложные алгоритмы или вычисления. Комментарии — отличный способ прояснить сложные алгоритмы, который поможет сэкономить время другим программистам.
Комментирование кода позволяет сообщить об ограничениях и проблемах. Всегда полезно добавить к коду комментарий, если из-за ограничений в фреймворке или библиотеке приходится реализовать обходное решение. Иначе другой программист может снова потратить время на создание уже найденного решения.
Примером служит следующий комментарий в кодовой базе фреймворка Electron на GitHub:
Однако излишние комментарии могут усложнить код. Вот почему многие программисты, как правило, не пишут Javadoc.
Избегайте повторений, но не переусердствуйте
Программисты часто перемещают операторы, которые повторяются несколько раз, в функцию или класс для упрощения повторного использования. Например, если несколько функций пытаются загружать файлы из интернета, тогда можно создать другой класс или функцию для обработки этого процесса. Расширенные возможности для повторного использования кода обеспечивают для всего проекта целый ряд преимуществ: устраняется излишняя сложность, новые функции можно реализовать с минимальными изменениями, а ядро базы кода станет более стабильным.
Поэтому перед созданием любой новой функции полезно предусмотреть возможность ее повторного использования. Кто-то может сказать, что предварительная модификация кода (рефакторинг) требует времени, которое можно было бы выделить на реализацию функций. Однако предварительный рефакторинг поможет предотвратить полную переработку кода, отнимающую много времени.
Между тем в оптимизации с целью многоразового использования и декомпозиции исходного кода должен быть и предел. Если его превысить, код становится слишком сложным.
Используйте единые правила форматирования
В процессе форматирования кода программисты часто пользуются различными методами. Некоторые включают автоформатирование. А другие любят делать это вручную. Форматирование кода характеризует стиль его написания. Другими словами, оно показывает, как программист руководствуется синтаксисом языка, как структурирует исходный код с помощью пробелов и разбиения на строки. Набор правил для форматирования кода определяет используемый стиль.
Хорошо сформулированное руководство по стилю дает целый ряд преимуществ: улучшает читабельность и качество кода, делая его более понятным для новых сотрудников. Посмотрите, как разбивка с помощью строк и пробелов меняет ситуацию.
Без строк и пробелов:
const runnerCtx = new ProgramRunner().useContext(this).useConfig(config).setTimeout(MAX_TIMEOUT);
Со строками и пробелами:
const runnerCtx = new ProgramRunner()
.useContext(this)
.useConfig(config)
.setTimeout(MAX_TIMEOUT);
Более того, если добавить между операторами несколько пустых строк, чтобы концептуально сгруппировать логику, то другим программистам будет легче разобраться в сегменте кода, который нужно изменить или изучить.
Логично структурируйте проект
Чистота кода в средних и больших проектах во многом зависит от их структуры. Почти все редакторы кода и IDE имеют древовидное представление структуры каталогов рабочего проекта. Программисты часто используют его для навигации по различным модулям и компонентам. Упорядоченная структура помогает упростить любой сложный проект, имеющий тысячи исходных файлов.
При декомпозиции больших исходных файлов на более мелкие, нужно использовать больше операторов для импорта. Сортировка или группировка операторов импорта — отличный способ упростить заголовки исходных файлов. Но это возможно, только если структура проекта упорядочена.
Посмотрите, как в проекте на Flutter специфичный для платформы код изолируется в разные каталоги для оптимизации структуры проекта.
Заключение
Поддерживать чистоту кода необходимо в каждом проекте. Все языки программирования и фреймворки мотивируют использовать четко сформулированные соглашения или методы присвоения имен. Крупные технологические компании создают собственные руководства по стилю, чтобы гарантировать качество баз кода:
- руководство от Google для многих языков;
- руководство от Airbnb для JavaScript.
Код будут читать компилятор и программисты. На компилятор стоит произвести впечатление оптимизированным кодом, а на других программистов — чистым.
Читайте также:
- Как писать чистый код?
- 5 советов по быстрому написанию кода на любом языке программирования
- 8 советов по улучшению качества кода
Читайте нас в Telegram, VK и Яндекс.Дзен
Перевод статьи Shalitha Suranga: 5 Clean Code Practices for Every Software Project