对编程的思考
最近,新项目都上 Gitlab 了,对同事提交的代码进行 merge 到 master 的时候,发现不合我的规范,因此进行了一些讨论,引发了一些思考。
起因
项目是一个接入项目,我封装好主要的 api 调用,其他人实现具体的接口。在一次 merge 中,发现有同事的代码不合我规定的规范。
我的
public class GetShopResponse extends GYBaseResponse { private List<Shops> shops; private int total; // 省略 getter setter }
同事的
public class GetShopResponse extends GYBaseResponse { private List<Shops> shops; private int total; public class Shops {/** 省略 */} // 省略 getter setter }
区别就是,我规定返回的抽象对象统一放到另一个包内,他直接放到到返回的类里。
争论
- 我最初也没想这么多,直觉就是应该分开放。
- 他认为写在里面也没影响,反正也不公用,不用写这么多类出来。(其实内部类写完编译之后实际还是有这么多个类)
想法
- 我觉得他说得也没错,只是一个用作承载数据的 bean ,放哪里都差不多,也不需要用内部类实现什么特别的功能。
- 我觉得他这么做估计是为了省事,不用去另一个目录新建一个文件,起名字,担心别人又跟他起一样的名字
- 后来我想了一下,我还是坚持分开。为什么呢?
- 代码不止是给机器运行的
- 返回值有多种范型的时候,response 就会很长,也就是有一堆 getter setter 在里面,还会柔和内部类的 getter setter
- 最重要的就是,人也需要看
- 调用 api 的时候,我可以直接看着 source 就知道返回值,十分清晰,如果揉在一起,我相信,我点进去看源码肯定会骂人
项目
- 主要的框架抽象开源出来了,地址 guanyi-api