Найти в Дзене
Digital Around

Костыли в сторону: как писать «чистый» код

Оглавление

Каждый программист стремится к чистому коду. Чистый код принято считать объективно качественным - его легко читать людям, и в то же время он выполняется гораздо быстрее кода, написанного Васей из 10-Б. Так как же добиться чистого кода? Эта статья поможет Вам приблизиться к совершенству и научиться писать код, за который коллеги похлопают Вас по плечу.

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

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

Тем не менее, мы можем выделить моменты, в которых большинство экспертов сходится во мнении.

Хитрые трюки

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

Начнём с самого распространённого, наипростейшего трюка. Такая «идиома» распространена среди программистов на многих языках:

-2

Читается это как «А равно НЕ НЕ Б».

Этот код позволяет превратить «правдивость» значения в буквальное логическое значение (например, присутствие значение в истину, а отсутствие значения в ложь). Если оператору «НЕ» передать «правдивое» значение, результатом будет ложь. Второе «НЕ» же умножает минус на минус, получая истину.

Как правило, в большинстве языков для таких целей есть выделенные функции, к примеру в JavaScript для этого вызывается функция с длинным названием Boolean()

А теперь пример пострашнее. Постарайтесь догадаться, что делает данный «однострочник»:

-3

...штаааа? Где тут начало, где тут конец? А ответ такой: этот код создаёт функцию, которая превращает такой_текст в такойТекст.

Здесь применено сразу несколько способов сокращать код: вместо говорящих названий переменных используются буквы, вместо хода программы двигаются сами функции, всё вмещено в одну строчку. А теперь представьте, что где-то на этой строке банальная опечатка.

На этом мы можем выделить наше первое правило чистого кода: Не мельчи! Размашистый код — не означает плохой код!

DRY - Don't Repeat Yourself

Don't Repeat Yourself (сокращённо — DRY, переводится как «сухой»), в переводе означает "Не повторяй за собой" — популярный лозунг в сообществе программистов, который призывает не писать код повторно. В качестве шутки ему стоит противоположное сокращение WET (в переводе — «мокрый»), который расшифровывают как «Write Everything Twice» (Пиши всё дважды) или «We Enjoy Typing» (Мы любим печатать)

«Мокрый» код выглядит подобным образом:

-4

Беда заключается в совершенно идентичных строках в начале каждой из трёх функций. Если в момент копирования в них были ошибки, исправлять ошибку нужно будет во всех трёх местах. А ещё лучше, если в двух местах её исправить, а в третьем месте забыть до лучших времён :)

«Сухой» альтернативой будет:

Мы превратили повторяемый код в повторно вызываемую функцию, таким образом наш ранее «мокрый» код живёт в одном месте, редактируется в одном месте, а выполняется во многих. Этот принцип также применим в HTML-разметке веб-страниц, где не менее чаще (если не более чаще) нарушается.

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

Технический долг

-5

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

— Неудачная декомпозиция: компоненты кода переплетены слишком тесно, недостаточно гибко, из-за чего внесение изменений в архитектуру становится труднее со временем

— Недостаточное тестирование: речь идёт не о автоматических тестах, а о применение быстрых решений без их проверки, что может привести к крушению проекта под собственным весом

— Откладывание рефакторинга на потом: проблемы проекта известны, или известно, что в проекте есть проблемы, но их переработки не происходит, из-за чего разработка может встать колом

Исходя из этого, третье правило чистого кода: решай проблемы вовремя! Не откладывай на «потом», ведь «потом» когда-нибудь настанет.

KISS - Keep It Simple, Stupid

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

Способов переусложнить свой код тысячи, можно привести лишь отдельные примеры:

— Слишком глубокая абстракция. Согласитесь, код выглядит «круто», когда у вас десятки классов наследуются друг от друга. Пример: классы от атома до программиста

-6

— Dependency hell (ад зависимостей)

Знакомая проблема любителей Node.js, в ад зависимостей мы попадаем, когда используем слишком много внешних библиотек, а ещё хуже становится, когда мы используем библиотеки, которые уже сами находятся в аду библиотек. А если где-то в глубине появятся глюки или уязвимости...

-7

Наконец, четвёртое правило чистого кода: будь проще! Большой проект - это не значит хороший проект!

За чистым кодом или за консультацией — это к нам :) Спасибо за внимание!