面试过程中又面试官问代码的结构,我不想说领域模型设计,因为我掌握不了精髓,更何况我们是做tob的服务,需求和bug一大坨,再好的设计也比不上甲方我需要这个功能,更没时间去梳理什么设计和层次,只能尽量减少重复的代码和共用。我刚入职的公司的时候完全的controller->service->dao一个类能达到上万行,一个方法能达到几千行,还不敢改。更不用说什么微服务。后来系统出现了瓶颈,优化代码和系统时,才算重构了一次。
我只是想梳理下载重构系统时如何减少的重复的代码,明确每个类各自的职责。参考了领域模型驱动设计这本书,但我运用的只是很浅很浅的层次,每个包下面存放的都是一类的业务,具体包下面还有包分别是controller,service,repository,dao,entity,moudle。dao是连接数据库用的类用的是mybatis框架,repository作用是操作dao,多个dao类可以共用一个repository,代表同一类业务,比如主表和明细表可以共用一个repository类,目的是减少重复的代码,service只能访问repository,因为我们是tob的业务,所以业务相对来说比较复杂,所以每个包下面的service包有个共用的xxService,这个标准service适用于标准,比较简单的逻辑,,至于其他复杂的逻辑则需要另行讨论和设计。一个方法尽量不超过80行,一旦一个类超过了一千行就要考虑拆分多个service类,同样每天可能会有一个比较资深的人员过下代码并且还要熟悉业务,为了减少代码,一旦一个service方法没有被引用即使删除。
网友评论