DRY и KISS — чистый код
DRY и KISS - два принципа в разработке программного обеспечения, которые призваны обеспечить более качественный, правильный и понятный (чистый) код. И то, и другое начинается в небольших масштабах, но может применяться и в более крупных масштабах, например, в проекте. Однако бывают ситуации, когда они противоположны и взаимоисключающи.
Данная статья направлена на решение этой дилеммы. Она не сможет обеспечить универсальное решение проблемы, но я надеюсь хотя бы немного повысить осведомлённость о ней. Сначала я кратко расскажу о двух принципах Clean Code, о которых идёт речь в статье, а затем укажу на проблему и возможные подходы.
DRY: Не повторяйтесь
DRY означает "Не повторяйся". Этот принцип чистого кода почти не требует объяснений. Следует избегать повторений в коде. В этом и заключается суть. Он также может применяться вне кода, например, для процедур, которые можно автоматизировать, или ручных операций в процессе разработки, которые в противном случае всегда выполнялись бы вручную, но эта статья не об этом.
Самый простой пример: "Магические числа" или "Магические строки". Жёстко закодированные числовые значения или строки. Они часто используются в нескольких местах и всегда имеют одно и то же значение. Чтобы соответствовать DRY, такое значение должно быть записано в константе, и эта константа должна находиться на своем месте в коде. Если это значение изменяется, необходимо изменить только в одном месте.
Другой пример - копирование методов. Блок кода повторяется несколько раз, что часто вызвано копированием и вставкой. "О, это именно то, что я сделал раньше. Тогда я просто скопирую отрывок". Было бы лучше передать эту функциональность собственному методу и вызывать его там, где это необходимо. Помимо сокращения усилий, связанных с внесением изменений именно в эту логику, это также делает код более читабельным, при условии, что для таких функций используются описательные имена.
KISS: Сделай это проще, тупица
Эта аббревиатура расшифровывается как "Keep it simple, stupid". Будьте проще. Простота - это всегда немного в глазах смотрящего, но в основном этот принцип чистого кода призван побудить разработчика искать самое простое, наименее сложное решение.
Более хитрый вариант, позволяющий продемонстрировать все свое технологическое мастерство, не всегда является лучшим. Простота должна в первую очередь означать, что код легко понять всем участникам процесса.
Другие разработчики не должны долго думать, чтобы понять смысл и назначение функции. Это исключает глубоко вложенные ветви и циклы, а также методы, которые распространяются на большое количество строк.
Проблема с этим принципом заключается в том, что "лёгкость" не может быть определена так строго. У каждого человека может быть свое представление о том, что трудно, а что легко.
DRY и KISS на практике
Соблюдение этих двух довольно простых правил уже может оказать большое влияние на проект. Простое внимание к тому, чтобы избежать повторения с помощью копирование методов, также обычно делает код более понятным и, следовательно, более лёгким для понимания.
Вместо повторяющегося блока кода теперь есть имя метода, который описывает, что происходит в этот момент. Таким образом, другой программист может быстрее понять функцию, и она может быть использована в любом количестве мест.