28 March 2011

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

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

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

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

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

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

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

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

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

В результате, важно помнить, что:
  • Не важно, как красив Ваш код, если он не работает.
  • Рефакторинг только тогда, когда он необходим, а не когда Вам не нравится код. Отсутствие симпатии к чему-либо НЕ ЯВЛЯЕТСЯ причиной достаточной, чтобы изменять это.
  • Юнит тесты очень ограничены, когда дело доходит до интеграции. Проводите реальное, ручное тестирование!!
  • Знайте различные инструменты и технические принципы, но не используйте их в качестве догм. Изучите, чем хорош и плох каждый, и примените когда необходимо.
  • Хорошие программисты продолжают делать хорошее программное обеспечение, плохие программисты продолжают делать плохое программное обеспечение, независимо от того, какой методике они следуют.
Tags:refactoring
Hubs: Designing and refactoring
+77
3.6k 44
Comments 82
Top of the last 24 hours