Поговаривают, что программисты не любят читать чужой код. Я частично с этим согласен: программисты не любят читать чужой НЕКРАСИВЫЙ код.
Я обожаю читать КРАСИВЫЙ код, наслаждаюсь его логичностью, разумностью и практичностью.
Я ненавижу читать код, написанный "чужими для хищников", абы как, просто чтобы формально удовлетворять каким-то требованиям (принятым командой или поставленным в задаче). Ненавижу потому, что, глядя на этот код, мне сразу становится его жалко, хочется "отмыть, причесать и накормить" его. Я испытываю сострадание и муки совести потому, что не могу просто взять и привести его в порядок. У меня есть свои задачи и чужой код я смотрю не в целях рефакторинга, а для того, чтобы проверить: может ли приложение делать то, что мне нужно.
Печаль моя усиливается от того, что программисты, написавшие этот код, никогда не приведут его впорядок. На все вопросы типа:
- а не хотите ли сделать вывод логов в человекочитаемом формате, чтобы разработчику было удобнее?
- а зачем такие комментарии: " матод создаёт А, принимает на вход А, возвращает А", которые не помогают понять, что происходит, но загромождают рабочее пространство?
- не хотите добавить актоматическое отслеживание обновлений версий зависимостей, чтобы не тратить на это время разработчика и не пропустить что-то важное?
- не хотите вместо четырёх application-xxxx.yml файлов под разные профили сделать 1, чтобы не отслеживать глазами, похожи ли они друг на друга, и не заниматься копированием конфигурации?
- почему бы не написать 50 юнит-тестов, которые проверят все компоненты, подготавливающие ответ на веб-запрос, вместо 1 интеграционного теста, который проверяет, что JSON на 5000 строк, полученный в результате направления приложению веб-запроса, совпадает с JSON-ом, который лежит в файлике рядом с тестовым классом (а если не совпадает, то программист просто обновляет "эталонный" JSON, чтобы он соответствовал получаемому ответу)?
- и т.д.
получаю ответы:
- код написан, сдан и работает,
- мы так привыкли, нам так удобно,
- отрефакторим потом, когда заказчик выделит средства на рефакторинг.
Уже само построение диалога, когда долго и в красках рассказываешь, как нужно сделать хорошо, кому и почему от этого будет хорошо, и получаешь короткие ответы "нам это не надо", говорит о том, что им это действительно не надо и они, вместо того, чтобы сделать хорошо, всегда будут делать плохо, прикрываясь "железным" аргументом: "всё и так работает".
Это, если говорить коротко о том, как всё печально бывает на соседних проектах.