Чистый код: 10 советов хорошего нейминга

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

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

Ведь читаемость это фундамент, без которого ничего не получится.

Чистый код: 10 советов хорошего нейминга

Почему читаемость так важна

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

Грамотно названный идентификатор делает код читабельнее, если прямо отвечает на вопрос «что это такое?». Это здорово помогает, если вы возвращаетесь к проекту спустя несколько месяцев, совершенно не помня его суть.

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

Примеров множество.

Десять главных советов по неймингу

  • Избегайте неинформативных имен

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

Например, вам требуется описать число максимальных попыток при авторизации. В таком случае не стоит называть идентификатор max или attempts. И тем более a или m.

Лучшим вариантом будет что-то в духе maxAttempts.

  • Избегайте абстрактных имен

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

Например, data или info мало что говорят о содержимом, скрывающемся за ними.

  • Соблюдайте длину имени, полагаясь на время жизни сущности

Используйте короткие имена для маленьких локальных переменных, а более длинные и описательные имена — для переменных с долгим временем жизни или широкой областью видимости.

Например, перебирая коллекцию изображений, позволительно использовать имя image, но не рекомендуется держать подобную сущность где-то вне контекста.

  • Использование предметной области

Имена должны отражать термины предметной области, для которой написан код. Это делает код более понятным в контексте проекта.

Например, можно использовать бухгалтерские термины по типу ИНН или НДС (tin и vat) вместо неочевидных insurerIdNumber или inderectTax.

  • Избегайте магических чисел

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

  • Избегайте отрицаний

Это имена по типу isNotClient и isIncomplete. Количество таких имен необходимо минимизировать, а лучше исключить совсем.

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

  • Используйте легко произносимые имена

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

  • Не используйте слова, зарезервированные языком программирования

К таким словам относятся имена базовых типов, классов и операторов.

Например, в языке Python можно «затенить» любые ключевые сущности, такие как, к примеру, range или list, и тем самым сильно усложнить дальнейшую работу.

  • Используйте стандартизированный нейминг для времени

Если нужно хранить время какого-либо события, используйте глагол в прошедшем времени с суффиксом At: deletedAt, publishedAt.

Так вы сможете быстро отличать такие сущности от прочих.

  • Согласуйте со своей командой правила именования

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

Чистый код: 10 советов хорошего нейминга

Приведем примеры хорошего и плохого кода

Хороший: Метод класса Product для получения его стоимости getPrice

Пояснение: Короткое и ясное имя, отражающее суть метода

Еще хороший: Пример метода из фреймворка Laravel: Model::firstOrCreate(attrs, values)

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

Плохой: Метод uploadArrayImage(models, collection_name, nameColumn, review)

Что не так: Совершенно неясно, что делает этот метод, если не потратить 15 минут на объяснение. Набор на первый взгляд не связанных друг с другом параметров, смесь стилей нейминга (snake_case и camelCase в параметрах collection_name и nameColumn) и использование отсылки к типу в имени метода. Так писать не надо.

Тоже плохой: Метод класса Salary — calculate()

Что не так: Совершенно неинформативный, хоть и ясно, что подразумевает расчет зарплаты. В тени остается суть: как именно и и с чем этот метод работает.

Подводя итог

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

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

Верим, что наши советы помогут вам усвоить и начать применять основные принципы грамотного именования кода!

Начать дискуссию