Dojo
最新
最佳
搜索
订阅
解道Jdon
架构设计
领域驱动
DDD介绍
DDD专辑
战略建模
领域语言UL
领域事件
商业分析
工作流BPM
规则引擎
架构师观点
数据工程
产品经理
系统思维
微服务
微服务介绍
微服务专辑
模块化设计
SOA
API设计
clean架构
SpringBoot
分布式事务
事件溯源
Kafka消息
Kubernetes
DevOps
编程设计
GoF设计模式
模式专辑
面向对象
函数式编程
编程语言比较
编程工具比较
形式逻辑
前端编程
Reactive编程
Jdon框架
Rust语言
人工智能
Web3
模因梗
幽默梗
程序员吐槽
面试技巧
Java入门
数字化转型
认知偏差
道德经
更多话题
一个棘手问题
10-07-22
tonyshen
各位道友,小弟最近接手了一个四手项目,也就是说这个软件已经有3批人在这个公司开发过,然后又做不来,都相继的离职了。
项目是一个小型的网络管理软件,粗略看了一下代码,不超过10万行,简单的jsp+servlet+jdbc,没有应用任何的框架。3
层
架构
,以数据库为核心进行设计。客户是一些地方的广电,目前客户大概有20家左右。
现在的问题是:1.升级问题:广电的需求基本上是今天要这个功能,过了一个礼拜他们可能就要另外一个功能,而且一旦新的
功能完成后,他们就要求立马给升级。升级的时候就是先把原来的数据备份一份,然后安装新的软件,然后将数据恢复进去。问题
就出现了,新添加的功能可能与之前的逻辑,数据有关联。也就是之前的逻辑中可能有这样的操作,就是在两张数据表中同时插入
数据,可是旧的版本中只有一张数据表。也就是新安装的软件中有一张关联的数据表是空的。那就要自己写代码去实现,通过查询
其他数据表中的内容,将对应的数据,拷贝到新的表中。更可怕的是可能不是一张新建的表,也许是在某个旧有的表中新增了一个
字段,又要写代码去实现将数据添加到这个新字段中,否则新的功能就无法实现。这样实在是太麻烦。
2.各个客户的需求不一样:同一个软件,这个客户要这个功能,另外一个客户可能要另外一个功能,公司人手
又不过,就我一个人在做,所以不可能写几套软件出来,一定要在一个软件中把各个客户的需求都集中在一起。这可能就会导致某
些界面不好看,因为好多功能集中在一起。
3.因为是3批人写过的代码,粗略看了一下,就觉得比较乱,同一个功能,这个类中写了一个方法,然后另
外一个类中又写了一个。
这个项目接手5天,打算重新设计,怕时间来不及。因为原来的版本问题实在太多,在原有的基础上写,有点越写越乱的感觉。
xinchi
2010-07-23 05:54
重构是一门很深的学问,一点一点,一部分一部分的重构。需要技术上的,风险上的,进度上的,多方面的协调能力。