Попросили разместить
Была когда-то давно то ли байка то ли рассказ про то как в одной организации требовался наклеиватель марок - учредили штатную единицу. Но так как он мог заболеть и пойти в отпуск, к тому же работал только в одну смену - потребовалась вторая штатная единица. А значит потребовалась табельщица которая учитывала бы - когда и кто работает. И начальник - который устанавливал бы расписание работы клеильщиков марок. То есть появлялось новое подразделение, в котором кроме начальника возникала секретарша. Ну и кончалась история тем что в организации возникал огромный департамент по наклейки марок.
Эту историю напомнили мне сегодняшние анализаторы качества кода. Если кто не знает - это программы которые анализируют код (обычно перед вливанием его в репозитарий в основную ветку) на наличие в нем повторяющихся участков, неиспользуемых переменных, нестандартных отступов и т. д. Вообще идея здравая - код, пропущенный анализатором почти всегда выглядит намного привлекательнее того кода который выделяют из себя программисты не использующие анализаторы кода. Беда в том что то ли в погоне за идеальным кодом, то ли в имитации полезной работы - в анализаторы кодов добавляют все новые и новые правила. Повторяющийся код? Да. Отступы? Да. Неиспользуемые переменные? Да. Приватный метод объявлен до публичного… ну допустим да (читателю кода как правило важнее публичные методы). Но вот уже добавляется правило - абстрактные методы должны быть раньше других. Или - позже других (с холиваром разработчиков и девопсов - как правильно). Или правило - название поля не должно содержать более 3х символов в верхнем реестре (то есть аббревиатура из 3х символов - в верхнем реестре, из 4х - в верхнем только первый символ - например aUSA но аUssr - якобы так “читабельнее”). Или - все переменные обязаны быть существительными из английского алфавита, сокращения недопустимы. Девопс плодит и плодит правила (благо плагины позволяют легко сочинять свои). Наверно все это на самом деле немного улучшает код. Но бед от такого улучшательства куда больше.
Во-первых разработчик думает не столько о результате работы программы сколько о том как бы сделать код “красивым” - это напоминает тетради по информатике некоторых студенток - код списан с доски ровным и красивым почерком, приятно посмотреть - но при этом - с ошибками и без понимания.
Во-вторых - отправка кода на пул реквест становится настоящим квестом - что за правила нам придумали и добавили сегодня.
В-третьих - и это, наверно, самое неприятное - на больших проектах сложнонастроеные правила могут обсчитываться часами. Очень неприятно отправить код на PR и ждать час чтобы увидеть что он отвергнут так как у вас в одном из классов дублируются три строки - а значит их можно, по мнению анализатора, вынести в отдельный метод. Ну а запускать анализ кода на локальной машине - это просто дико тормозить процесс разработки.
Повторюсь - кодеанализаторы - штука нужная и даже необходимая. Но инструмент не должен превращаться в фетиш.


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