Здравствуйте, GlebZ, Вы писали:
GZ>Рефакторинг ни в коем случае не должен затрагивать интерфейс. Это просто улучшение кода при той же функциональности. Правда у каждого нормального программиста есть свои понятия на код с запашком. Поэтому рефакторинг — процесс практически вечный и зависит только от количества программистов.
Рискну возразить. Правда, учитывая некоторую свою специфику, которая заключается вот в чем. Мне платят деньги не за программный код и даже не за функциональность (точнее сказать не просто за функциональность). Мне платят деньги за нетривиальные и эффективные решения, алгоритмические, инженерные и дизайнерские. На том и стоим. И вот с этой моей позиции, так называмое "просто улучшение кода при той же функциональности" является абсурдом. Если требуется улучшать код, значит я схалтурил раньше. Мне крайне неприятно возвращаться к халтурному коду, поэтому я стараюсь халтурить как можно меньше. Так получается дешевле. Конечно же, на стадии экспериментов с алгоримом я пробую всякие-разные промежуточные решения, в том числе и простейшие и заведомо неэффективные. Но эти промежуточные решения никогда не доходят до стадии релиза.
Бывают случаи, когда действительно имеет смысл заменить начинку на более эффективную, но они крайне редки. Ну, типа сообразил, как можно сделать слегка эффективнее.
А вот с интерфейсами, что внешними, что внутренними, все гораздо сложнее. Очень часто по началу весь дизайн является неочевидным, выясняется по ходу работы. Соответственно, приходится вносить изменения и улучшения. Я никогда не поверю в то, что все можно решить и узаконить на стадии проектирования. Не бывает такого, не только в программировании, но и вообще в любой инженерной деятельности. Конечно же, за исключением типовых решений (шаблонов проектирования) — там это возможно. Но во-первых, типовые решения актуальны как правило лишь для тривиальных задач, во-вторых, такие задачи и решения мне не интересны.
Резюмируя, могу сказать следующее. Писать код, который практически не требует улучшений, на порядок проще, чем дизайнить грамотные интерфейсы (внешние, внутренние — не важно). И если приходится существенно (и главное — постоянно) улучшать существующий код, значит что-то не ладно в датском королевстве.
То есть, я не приемлю подход, при котором надо по-быстрому напедалить абы-как, а потом долго и нудно улучшать и переписывать.
- Неладно шьешь, донюшка!
— Я еще пороть буду, матушка!