这是我第一次在 V 站发帖,有点小激动啊! 先自我介绍一下,一个 Java 后端开发人员,三年+经验。现在有几个日常开发中遇到的问题,因为 V 站的大厂大佬比较多,所以想跟大家请教请教,希望大家可以谈谈自己的看法。
问题 1 、在开发一个新功能时,我们定义好了具体的表模型,在定义 Controller 、Service 、Mapper 、...层的时候是怎么划分的。
- 严格按照表模型的粒度来划分的。比如:user 表,就有 UserController 、UserService...
- 是按照业务场景的粒度来划分的。比如:比如查询用户信息的业务场景(查询职务、职位、组织等等)需要四五张表才能支撑起来。定义一个统一的 UserDetailController 、UserDetailService...
- 以上两种混合使用。怎么方便怎么来。
问题 2 、还是和 Service 和 Mapper 层有关,现有 AController 、AService 、AMapper 、BController 、BService 、BMapper 、...、ZMapper 。在注入相关对象的时候,有以下两种使用方式,你们使用哪种,或者有其他方式。
- AController -> AService -> AMapper ,BController -> BService -> BMapper
- AController -> BService -> CMapper ,BController -> AService -> CMapper
层级:就是问题一中两种划分粒度,第一种是按表模型,第二种是按业务场景。
第一种是严格注入,Controller 层只能注入本层级的 Service ,本层级的 Service 只能注入本层级的 Mapper ,本层级 Service “仅” 可以注入其他层级的 Service ,不能注入其他层级的 Mapper 。
第二种就是比较随意,Contorller 层可以注入非本层级的 Service ,Service 也可以注入非本层级的 Mapper 。
问题 3 、谈谈对单元测试的看法。
- 业务场景太复杂,100 行的业务代码,可能要写 500 行的单测代码,要 Mock 一大堆东西,有些抵触,个人更偏向于自己写完代码,自己调用接口,修修补补。也有可能代码功力不够,方法拆的不够小,导致单测代码比较难写。也知道单测对系统稳定性、低级 Bug 的发现有立竿见影的效果。
- 你的想法 /你们项目的做法。
先说我自己习惯的使用场景吧。以上问题都是选第一种,可能我有强迫症?或许有些矫情?
大家可以谈谈自己的习惯,和现有项目中的现状,让我学习学习[手动狗头]。
以上仅仅是本人看法,不喜轻喷。