重构了一下程序