В очередном опросе на хабре http://habrahabr.ru/blogs/development/136790/ выясняли отношение к рефакторингу в коммерческих конторах. Почти в 60% фирмах потоком гонят быдлокод и даже не думают о рефакторинге. Оно в общем-то и понятно, что не может каждый проект быть идеалом с точки зрения кодинга. Да и клиент не всегда готов переплачивать за манипуляции с кодом, которые не добавляют ровным счётом никакой новой функциональности. На моей памяти только один мой клиент предъявлял хоть какие-то требования к коду. Всем остальным было пофигу. Так стоит ли напрягаться?

    А самим фирмам по разработке ПО это зачем надо? Чтобы быстрее выполнить заказ и порадовать клиента? Да ну нафиг! Клиент же оплачивает работу по часам. Я помню однажды зарефакторил разрабатываемую ЦРМку. В результате стал тратить в 2-3 раза меньше времени на внесение доработок. И, как следствие, начал терять из-за этого деньги, оплата-то была почасовая. Пришлось поднимать часовой рейт.

    Поэтому я для себя выработал не только правила проведения рефакторинга, но и определился для каких частей проекта этот рефакторинг будет применяться. Все мои разработки делятся на три части. Первая - это фреймворк ultimix, который рефакторится всегда как только свободная минутка подвернётся. Потом идут бизнес компоненты, из которых собираются проекты. Они уже рефакторятся по остаточному принципу и требования к рефакторингу тут не столь жёсткие. И наконец третья часть любого проекта - это собственно код, который реализует функциональность заказанную клиентом, и которой нет ни во фреймворке ни в бизнес-компонентах. Эту часть проектов я даже и не помню как рефакторил в последний раз. Вот как-то так.