1. 前言
作为非科班自学 Python,毕业转 Java 的程序员,工作至今两年有余。本持着对技术的追求,对代码的精益求精,通过不断学习,总结了一些代码的坏味道和重构的技巧,因此将其作为系列文章分享出来,供大家交流讨论,共同成长进步。
本系列文章定位:
- 普及常见的代码坏味道
- 普及微重构的技巧,聚焦在代码层面的重构,不涉及架构层面的重构调整
- 以 Java 语言为例,利用 IDEA 进行重构
2. 坏味道之神秘命名
命名
是让每一位程序员命名头疼的事情。
命名不好有两种情况:
- 开发随意命名,不遵循团队规范,比如用
a
,da1232
等命名。 - 开发受限于能力,暂时没有想到好的命名。
对于情况1,作为有追求的程序员,一定要杜绝。
对于情况2,一方面我们可以通过阅读大量的代码,通过 GitHub等借鉴别人的命名;另一方面,《程序员底层思维》一书中提到,命名不好,说明你对某个概念理解的不够,无法做到合理的抽象,需要我们区更加深入思考概念,培养自己的抽象思维,将抽象出一个好理解的词汇。
神秘命名
:不知道含义的命名。比如:gg
等。这在一些项目中非常常见。
3. 神秘命名的影响
神秘命名,影响代码的可读性和可维护性,极大增加了项目的学习维护成本。
4. 重构神秘命名目标
代码直观明了,一眼知道它在做什么,最高境界是代码自注释
。
5. 重构神秘命名技巧
-
构筑单元测试,保证功能,用例全部通过
-
通过 IDEA 的快捷键
Shift + F6
批量快速重命名 -
重跑单元测试,用例依旧全部通过,说明重构没问题
技巧
:重构是一个危险的活,重构的第一步就是构筑防护网,保证原有的功能,之后,逐步的小重构,每修改一次,重新跑一次单元测试,保证每次重构修改都不会影响原有功能,不断迭代,达到重构完成。
6. 建议的命名
- 类(含枚举类)和接口:采用大驼峰命名。
- 类和枚举:名词或名词短语,不应该用动词
- 接口:名词或名词短语,形容词或形容词短语
- 测试类:建议以
测试类 + Test
结尾命名,可以通过Ctrl +Shift + T
创建测试类 - 抽象类:推荐以
Abstract
或Base
开头
- 方法:
- 方法名:小驼峰命名,采用动词或动词短语,如:
get + 非布尔属性
,is/has/can/should... + 布尔属性名
,set + 属性名
,has + 名词/形容词
,动词
,动词 + 宾语
,回调方法(callback) 允许介词 + 动词形式,如 onCreate
- 测试方法:可以使用
_
,建议 BDD,也可以小驼峰命名,以test
开头
- 方法名:小驼峰命名,采用动词或动词短语,如:
- 常量:全大写单词组成,
_
分隔单词,不要使用魔鬼数字 - 非常量字段:小驼峰,名词或名词短语,集合用复数