加上有效性判断
做些小修改
改用 self 记录模块所需数据、补充任务初始化代码。