28 марта 2011

Одержимость красивым кодом, синдромом рефакторинга

Проектирование и рефакторинг
В последнее время распространилась одержимость рефакторингом. Доходит до того, что некоторые программисты ставят ему больший приоритет, чем более важным вещам, таким как:
  • Корректность
  • Надежность
  • Отслеживаемость
  • Поддерживаемость

Если это доходит до крайности, и все, о чем заботится программист, является красота кода, он может попасть под синдром рефакторинга.

У этого синдрома есть следующие признаки:
  • Полное игнорирование кода других программистов.
  • Навязчивые идеи с обозначением переменных и методов.
  • Злоупотребление и переоценка юнит тестов.
  • Полное игнорирование любого вида документации, архитектуры или анализа.

И обычно последствия:
  • Ошибки интеграции.
  • Нехватка надежности.
  • Потеря производительности.

Главный вопрос к синдрому рефакторинга, это то, что он базируется на красоте кода, и у этого есть три больших проблемы:
  • Непереносимость. Весь код — дерьмо. Это — одна из моих любимых цитат, и доказана следующими фактами:
    1. Принцип исключения. Все программисты склонны думать, что только их код — единственный хороший код во вселенной.
    2. Принцип устаревания. Как программист, поскольку Вы изучаете что-то новое, Вы тоже полагаете, что Ваш старый код дерьмо.
    3. Принцип опыта. Я никогда не видел код, который посчитал бы полностью хорошим.

  • Это не столь важно. Даже если код хорош, не значит, что он правилен, и между прочим, правильность кода — вещь, более важная чем красота.
  • Неправильная перспектива. Сосредоточение на коде непосредственно, а не на приложении в целом заставляет программиста забыть о других более важных его (приложения) частях.

Этот синдром рефакторинга, кажется, связан с последними популярными тенденциями, когда программисты путают инструменты и технические принципы как TDD, рефакторинг, юнит тесты… с тем, что действительно нужно сделать. Это сопоставимо со строителем, который полагает, что, иметь новые инструменты, более важно чем дом, который он строит.

Важно понять, что ни один из инструментов или принципов разработки, не плох по существу. Только то, что мы злоупотребляем ими, приближает нас к синдрому рефакторинга.

В результате, важно помнить, что:
  • Не важно, как красив Ваш код, если он не работает.
  • Рефакторинг только тогда, когда он необходим, а не когда Вам не нравится код. Отсутствие симпатии к чему-либо НЕ ЯВЛЯЕТСЯ причиной достаточной, чтобы изменять это.
  • Юнит тесты очень ограничены, когда дело доходит до интеграции. Проводите реальное, ручное тестирование!!
  • Знайте различные инструменты и технические принципы, но не используйте их в качестве догм. Изучите, чем хорош и плох каждый, и примените когда необходимо.
  • Хорошие программисты продолжают делать хорошее программное обеспечение, плохие программисты продолжают делать плохое программное обеспечение, независимо от того, какой методике они следуют.
Теги:refactoring
Хабы: Проектирование и рефакторинг
+77
3,6k 44
Комментарии 82
Похожие публикации
Unity-разработчик на VR- и AR-проекты
от 60 000 ₽JetStyleЕкатеринбургМожно удаленно
Senior / Lead Ruby on Rails Developer
от 150 000 до 285 000 ₽HttpLabРостов-на-ДонуМожно удаленно
Младший системный администратор
от 30 000 до 30 000 ₽ПРОФИНовосибирск
UX/UI Designer
от 80 000 до 120 000 ₽БастионМосква
Консультант SAP ABAP / Разработчик ABAP
от 200 000 ₽Алкогольная Сибирская группаМожно удаленно
▇▅▄▅▅▄ ▇▄▅