代码重构的前提是什么