Зачем рефакторинг?
13/12/11 11:40![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
На докладе по легаси на expert labs меня спросили: зачем рефакторинг?
То есть, рефакторить, конечно, можно, но какая в этом цель?
Я тогда не сформулировал чёткого ответа, только пробулькал что-то про критичную подсистему, которую можно отделить и заменить.
И правда, сам по себе рефакторинг — процесс ненаправленный, хотя помогает изучить код. Одновременное существование рефакторингов "extract method" и "inline method" это доказывает.
Но правда и то, что источники боли в легаси распределяются по принципу Парето, 80/20. Можно ведь выделить самый противный или наиболее часто изменяемый кусок, целенаправленно выделить интерфейсы и развязывать его зависимости, написать на интерфейсы тесты, а потом заменить целиком.
И да, у работы с легаси должны быть SMART цели, "иначе бросание будет пустою забавою".
То есть, рефакторить, конечно, можно, но какая в этом цель?
Я тогда не сформулировал чёткого ответа, только пробулькал что-то про критичную подсистему, которую можно отделить и заменить.
И правда, сам по себе рефакторинг — процесс ненаправленный, хотя помогает изучить код. Одновременное существование рефакторингов "extract method" и "inline method" это доказывает.
Но правда и то, что источники боли в легаси распределяются по принципу Парето, 80/20. Можно ведь выделить самый противный или наиболее часто изменяемый кусок, целенаправленно выделить интерфейсы и развязывать его зависимости, написать на интерфейсы тесты, а потом заменить целиком.
И да, у работы с легаси должны быть SMART цели, "иначе бросание будет пустою забавою".
Tags: