Нет хорошего кода. Весь код мусор. Чистый код одного человека — технический долг другого.

Код должен добавлять ценность для клиента. Если ваш код не добавляет ценности, его необходимо удалить. Если вам нравится программировать ради кодинга, вы ботаник. Пожалуйста, бросьте эту карьеру и идите решать кубики Рубика или другие бессмысленные загадки.

При этом, ЕСЛИ ваш код приносит пользу клиенту, вы измеряете его превосходство тем, насколько легко его можно удалить. Вы можете легко удалить код, если:

  • Низкая абстракция. Послушайте меня. «Абстракции» и «объектно-ориентированный» — это ПРИДУМАННЫЕ концепции, они не были обнаружены, как лямбда-исчисление, из функционального программирования, и я думаю, вы можете это сказать. Кроме того, они плохая идея. Существует очень мало случаев, когда ваш код выигрывает от абстракций; например, если вы пишете структуру данных, это может быть хорошей идеей. Но для 95% кода, который вы пишете, абстракция выстрелит вам в ногу, как только вы столкнетесь с тем крайним случаем, который ваша абстракция не покрывает, потому что вы не подумали об этом. Кроме того, абстрактный код нельзя легко удалить, теперь он переплетается со всеми остальными частями вашего кода. Абстракция предназначена для людей, которые хотят чувствовать себя умными, а не для людей, которые хотят приносить пользу.
  • Он имеет выразительное название и не имеет побочных эффектов. Если ваш метод делает ТОЧНО то, что он делает, вы можете легко удалить свой код. Поддерживать огромные проекты будет проще простого. Худшее, что может случиться, это если метод ТОЧНО не делает то, что должен делать. Чувак, удачи в отслеживании этой ошибки.
  • Вы уже удалили его. Послушайте меня. Ваша первая идея о том, как добиться чего-то, что вы делаете впервые, всегда будет плохой. Даже не ПЫТАЙТЕСЬ сделать это идеально с первого раза; попытайтесь проверить свои предположения и выяснить, что то, что вы имеете в виду, является решением ВООБЩЕ. ТОГДА вы можете удалить свой код или его части и написать его снова. Рефакторинг. Сделай это. Но только ПОСЛЕ того, как вы сделали это быстро и грязно. Весь достаточно хороший код — это код, который был написан как минимум дважды.
  • Он имеет четкую структуру папок. Практически столь же важной, как выразительные имена, является структура папок, которой вы придерживаетесь во всем проекте, чтобы вы точно знали, где что находится, не задумываясь.
  • Вы пишете 20 % тестов, которые имеют решающее значение. Я понимаю. Дядя Боб говорит вам протестировать весь код. Вам нравится модульное тестирование и вы видите, что все ваши маленькие зеленые флажки пройдены. Но вы избегаете интеграционных тестов, не так ли? Потому что их сложно писать. Но это те, которые вы действительно должны написать, потому что они предупредят вас, если вы что-то сломали; потому что это происходит, когда много разных частей работают вместе, слишком много, чтобы удержать все в памяти вашего мозга, что происходит.
  • И, наконец, это ПРОСТО и ГЛУПО; Опять же, если вы хотите показать, насколько вы умны, соберите кубик Рубика. Я ненавижу «умный» код с «элегантными» решениями. Я умный. Код должен быть глупым. Хорошо, если только вы не пишете следующую большую вещь в области ИИ.

И, наконец, имейте в виду; упреждающая оптимизация — корень всех зол в программировании :)