一、什么是好代码
抛开性能、并发、一致性等技术因素,好的业务代码应当如一篇显浅易懂的业务叙实文章,满足以下几个基本条件:
- 词要达意:最基础的变量、函数、类的命名,是否名达其意 。
- 结构清晰:类的关系结构,函数的调用结构,是否如文章的章节、段落划分层次分明和逻辑清晰 。
- 紧扣主题:包、类、函数是否内聚,是否破坏了单一和开闭原则 。
二、从最基本做起
2.1 命名
好的代码,从好的命名开始,做到名副其实 。
变量命名
变量名是名词,要正确和清晰地描述业务语义,如果一个变量需要通过注释补充说明,那可能就是没取好变量名 。
变量命名的关键点:
1、词要达意:避免无业务语义的命名,如:list、val、a…;
2、语境范围:避免小范围词套大范围数据,反之亦然,不使用过于宽泛的名词 。
3、名词复数:统一风格,加s或List尾缀,变量名建议使用s尾缀,函数名建议使用List尾缀 。
4、后置限定词:限定词是对前面变量名的修饰,可以描述名词的作用范围属性,例如:
- 请求入参:xxxQuery/xxxRequest
- 返回结果:xxxResponse/xxxResult
- 传参数据:xxxDTO/xxxVO/xxxInfo
- 运算结果:xxxTotal(总和)/xxxMax(最大值)/xxxAverage(平均值)
Good case:
函数命名
函数命名要体现做什么,而不是怎么做,要清楚表达出操作意图和业务语义 。
函数命名的关键点:
- 动名词搭配,动词表达操作意图,名词表达业务语义 。
- 正反操作使用对仗词,例如:
- add/remove
- open/close
- begin/end
- insert/delete
- first/last
- min/max
Good Case:
类命名
类是面向对象中最重要的概念,是一组关联数据的相关操作的封装,通常可以把类分为两种:
- 实体类:承载业务的核心数据和业务逻辑,命名要充分体现业务语义,比如Order/Buyer/Item 。
- 辅助类:协调实体类完成业务逻辑,命名通常加后缀体现出其功能性,比如OrderQueryService/OrderRepository 。
- 辅助类尽量避免用 Helper/Util 之类的后缀,因为其含义过于笼统,容易破坏单一职责原则 。
- 针对某个实体的辅助操作过多,或单个操作很复杂,可通过 “实体 + 操作类型 + 功能后缀”来命名,同时符合职责单一和接口隔离的原则,比如OrderService:
- OrderCreateService:订单创建服务 。
- OrderUpdateService:订单更新服务 。
- OrderQueryService:订单查询服务 。
包(package)是一组强关联(内聚)的类的集合,起分类收纳和命名空间的作用 。
- 包名应该要反映一组类在更高抽象层次上的联系,比如类Apple、Orange都是水果,可以收纳进fruit包内 。
- 包的命名要大小适中,不能太具体,也不能太抽象 。比如包名叫Apple,太具体导致类Orange放不进去,又比如包名叫food,太抽象导致其他非水果也被放进来了 。
推荐阅读
- 车辆识别代码是什么意思
- 音序怎么写在四线格里 音序怎么写
- 2022年各高校专业代码四位数 2022年各高校专业代码
- 诗歌的特征包括 诗歌的特征包括哪四个
- 新课程教学反思中的问题有哪些
- 幼儿园教学经验总结 教师个人教学经验总结
- 罗牛山学校教学质量怎么样
- 月份天数口诀手指视频 月份天数口诀歌
- python编程入门自学 游戏代码大全可复制免费
- 教学过程的本质表现在哪些方面 教学过程的本质属性是