重新组织了代码，使得源文件更加精简