От нечего делать сижу и смотрю код одного коммерческого продукта:
$db->querySingle("SELECT ... FROM ... WHERE " . $query . ";");
SQL-инъекции и экранирование данных? - Не, не слышал.
$search = isset($_GET['search']) ? trim(strip_tags($_GET['search'])) : '';
strip_tags тут как ёжику футболка.
<select class="form-control mx-sm-3 form-control-sm" name="status">
<option value="">'.abTranslate('Any status').'</option>
<option value="0" '.(($status == '0') ? 'selected' : '').'>stop</option>
<option value="1" '.(($status == '1') ? 'selected' : '').'>auto</option>
<option value="2" '.(($status == '2') ? 'selected' : '').'>click</option>
<option value="3" '.(($status == '3') ? 'selected' : '').'>local</option>
<option value="4" '.(($status == '4') ? 'selected' : '').'>allow</option>
<option value="5" '.(($status == '5') ? 'selected' : '').'>goodip</option>
<option value="6" '.(($status == '6') ? 'selected' : '').'>block</option>
<option value="7" '.(($status == '7') ? 'selected' : '').'>fake</option>
<option value="8" '.(($status == '8') ? 'selected' : '').'>miss</option>
</select>
Сформировать массив ключ-значение и циклом создать массив с option's? - Нее, и так сойдет.
Вроде бы всё правильно и логично - код надо писать так, что бы его можно было легко поддерживать. Рефакторинг нужен - он сохраняет жизнеспособность продукта.
Но есть один парадокс: код выше мало того, что выполняет свои функции на коммерческой основе, так ещё и автор кода имеет знание предметной области, о которой рецендент, оценивающий код, не знает ровным счётом ничего. Возникает вопрос: кто тут дурачок? Рецендент, набивший руку и умеющий писать "красивый код" или автор, продающий свой продукт?
"Дружба с кодом" - это раковая опухоль современной индустрии, которая из вроде бы из благих и обоснованных причин перетекла в вялотекущее состояние перманентного перфекционизма её участников, ведущее к излишней токсичности и проявлению интеллектуальной дедовщины в рабочих коллективах. Автор автор статьи Дедовщина на code review так описывает это явление:
А 80% замечаний — это нечто в стиле: вот тут можно более красивые абстракции переписать, как учили в книгах по паттернам проектирования, вот тут можно более модную библиотеку, а вот тут давай все на свете переименуем (а потом ещё раз переименуем), а вот тут давай заложим побольше гибкости на случаи, про которые мы пока ничего не знаем (а потом всё равно всё переписывать, потому что будущее непредсказуемо), а вот тут можно более красивую конструкцию языка применить, а вот тут давай структуру классов полностью поменяем, потому что мне так больше нравится и прочее прочее.
К сожалению, бизнес не всегда знает или понимает, чем занимаются его сотрудники. Бизнес хочет результат, но бизнес не знает о префекционистских тараканах, которые зачастую живут в головах его персонала. Начитавшись "умных" книжек всяких айти-теоретиков чувство перфекционизма у разработчиков излишне гипертрофировалось, что вылилось в некую форму поклонения программному коду и нивелированию основной причины, для которой этот код пишется.
Чем больше вы мастурбируете на красоту кода, на стандарты кодирования, тем меньше у вас остаётся времени на самое важное - на осознание полезности этих действий.
Идеальный код - это иллюзия, особенно если вы пишите его в промышленных масштабах. Функции инспекции, которые зашиты в любых современных профессиональных IDE, без труда могут найти в большом работающем проекте сотни ошибок, напоминаний и предупреждений. Становится ли от этого продукт, выполняющий свои функции, сильно хуже? Вряд ли.
Не так давно на нашем сайте участниками было введено такое понятие, как "докопаться до пробела в коде". Это не только про рефакторинг, это про всю ту заумную бюрократию, которая окружает современную разработку: начиная с онлайн-кодирования на собеседованиях, код-ревью и заканчивая тем самым лишним пробелом в коде, от которого сильно умные интеллектуалы мира IT падают в обморок прямо на рабочем месте.
Код должен работать и приносить пользу, на него не нужно молиться, его не нужно бесконечно вылизывать и любить. Я в очередной раз хочу дать ссылку на статью "Автор библиотеки, от которой зависит половина сайтов, сидит без денег" - она лишний раз демонстрирует, что код сам по себе - не больше чем текст на экране. Важен не код, важен продукт и результат работы продукта. Даже самый чистый и вылизанный код не стоит ровным счётом ничего (его на гитхабе как дерьма за баней). А вот излишний перфекционизм служит предиктором симптомов психического расстройства.
Поэтому, завязывайте дружить с кодом, дружите лучше с девочками.


Комментарии (144)