添加详细的描述，重构代码