重构大部分代码