【复盘】定开项目复盘
2025-06-16 11:36:40 # 复盘

最近做了一个项目,虽然项目周期还没结束,但是由于前期设计上的问题,导致了周末要加班了,必须要盘它。

1. 背景

这是一个数据清洗的项目,要清洗的字段很多,且清洗逻辑都比较简单。所以打算将这些清洗规则存在数据库中,在程序启动后加载清洗规则,进行清洗。

这类型以及场景遇到过很多次了,所以我有封装了一套清洗框架,并且在这次也使用上了。

2. 遇到的问题

越是通用的框架,去处理越是复杂的场景,所花费的成本越高(开发上兼容、维护上困难)。

这次的处理中有几个字段的处理比较复杂,导致我为了兼容这些逻辑花费很多时间(不过也补充完善了这个清洗框架)。

但是这几个字段的清洗规则的配置,复杂度提高了很多,导致维护成本变高很多,可以用防御性编程来形容了。

一位前辈和我review这块代码的时候就提出,这块配置太复杂,之后还会有新的配置,大概率会导致配置错误,以及配置所发费的时间甚至比写代码的时候还长(本身封装这套代码的目的就是减少开发时间)。

为了防止坏事,只好周末加班,将这套比较复杂的逻辑用代码写死(这几个字段的业务逻辑不会变化)。

3. 复盘

在数据清洗这个项目中,为了减少开发时间,在项目中总结了一套较为通用的清洗框架,并且在多次类似项目中迭代。

后面遇到能往配置中放的清洗逻辑就全部往配置文件中放,导致配置变的复杂,排查问题困难,修复bug困难,以及后来人难以维护,防御性拉满。

在这个项目中,以及之后类似的项目中,应该将简单重复的操作,通过配置化处理;而复杂较少的操作,通过代码进行特殊处理。

这种非长期的项目不需要考虑太多的拓展性,很多地方多使用if也比一些设计来的直观,也没有必要将如上述两种情况进行统一的处理。

写到这里,上面的总结起来就是,不要过度设计。

上一页
2025-06-16 11:36:40 # 复盘