Entry tags:
Зачем рефакторинг?
На докладе по легаси на expert labs меня спросили: зачем рефакторинг?
То есть, рефакторить, конечно, можно, но какая в этом цель?
Я тогда не сформулировал чёткого ответа, только пробулькал что-то про критичную подсистему, которую можно отделить и заменить.
И правда, сам по себе рефакторинг — процесс ненаправленный, хотя помогает изучить код. Одновременное существование рефакторингов "extract method" и "inline method" это доказывает.
Но правда и то, что источники боли в легаси распределяются по принципу Парето, 80/20. Можно ведь выделить самый противный или наиболее часто изменяемый кусок, целенаправленно выделить интерфейсы и развязывать его зависимости, написать на интерфейсы тесты, а потом заменить целиком.
И да, у работы с легаси должны быть SMART цели, "иначе бросание будет пустою забавою".
То есть, рефакторить, конечно, можно, но какая в этом цель?
Я тогда не сформулировал чёткого ответа, только пробулькал что-то про критичную подсистему, которую можно отделить и заменить.
И правда, сам по себе рефакторинг — процесс ненаправленный, хотя помогает изучить код. Одновременное существование рефакторингов "extract method" и "inline method" это доказывает.
Но правда и то, что источники боли в легаси распределяются по принципу Парето, 80/20. Можно ведь выделить самый противный или наиболее часто изменяемый кусок, целенаправленно выделить интерфейсы и развязывать его зависимости, написать на интерфейсы тесты, а потом заменить целиком.
И да, у работы с легаси должны быть SMART цели, "иначе бросание будет пустою забавою".