Комментарии 3
Вот честно говоря, прочитал статью и так и не понял о чем идет речь.
Сначала:
Я к тому, что каждый понимает под чистым кодом что-то своё: для кого-то достаточно правильного именования и грамотной декомпозиции, а кто-то не видит чистого кода без полиморфизма и высокого уровня абстракции.
И получаеться что у нас нет предмета обсуждения, так как каждый под эти понимает свое. Но далее встречаеться:
Вопрос состоит в том, стоит ли выполнять абсолютно все правила в любом контексте.
Какие правила, если выше описано что каждый понимает свое?
Собственно, вопрос мой в том, насколько уместно соблюдать все сложные архитектурные правила чистого кода в каком-нибудь TODO приложении..
Мысль, которую я хочу донести, состоит в том, что не все задачи требуют соблюдения всех правил чистого кода.
Вроде бы говорили про философию а перешли к каким то уже конкретным правилам.
Всегда ли стоит добиваться максимальной абстракции? Обязательно ли функции должны быть короткими и выполнять одну задачу? Мой ответ: нет, не всегда. Однако замечу, что и выдавливать максимальную производительность из кода необходимо не всегда.
И вот здесь начинаешь подозревать что уже произошла подмена понятий. Вместо абстрактного философского понятия "чистый код", уже имеется в виду конкретно заветы Мартина, SOLID, паттерны и т.д.
Напишу свое мнение со своего опыта.
Не стоит делать из паттернов, принципов и книг известных авторов религию. В моем понимании, чистый код - это код который понятен большинству разработчиков, устойчив к изменениям и надежен а не тот который формально что-то соблюдает.
Второе, из определенного опыта связанного с геймдевом и огромным требованиям к производительности, могу заявить: можно писать хорошо и понятно, при этом производительно.
Просто не нужно формализованные правила возведенные в религию напрямую отождествлять с понятием хорошего кода.
Так "шашечки" или "ехать"?
Покрыть весь код тестами — вполне себе вызов, потому что для некоторых участков кода это может быть невозможно, например, модули, использующие псевдослучайные числа. Мы просто не сможем предугадать результат их выполнения.
С чего это?
Просто прячете генерацию псевдослучайных чисел за простеньким адаптером, который мокаете в тестах, и - ву а ля! - покрываете тестами модули, использующие псевдослучайные числа.
Чистый код — дар или проклятие? Акт II. Компромисс