为什么要重构?如何重构?这个宝典请一定收藏!( 四 )


类名/接口名
单词首字母大写
,izer
变量名
首字母小写 , 多个单词组成时 , 除首个单词 , 其他单词首字母都要大写
,
常量名
全部大写 , 多个单词 , 用'_'分隔
方法
同变量
read(), (), ()
类命名
类名使用大驼峰命名形式 , 类命通常使用名词或名词短语 。接口名除了用名词和名词短语以外 , 还可以使用形容词或形容词短语 , 如  ,  等 , 表示实现该接口的类有某种功能或能力 。
场景约束示例
抽象类
或者 Base 开头
枚举类
Enum 作为后缀
工具类
Utils 作为后缀
异常类
结尾
接口实现类
接口名+ Impl
设计模式相关类
 ,  等
当使用到设计模式时 , 需要使用对应的设计模式作为后缀 , 如
处理特定功能的类
 , ,
表示处理器 , 校验器 , 断言 , 这些类工厂还有配套的方法名如  ,  , 
特定层级的类
 ,  ,  , Dao 后缀
,  , 
特定层级的值对象
Ao, Param, Vo , ,
Param调用入参;Ao为返回结果;Vo通用值对象;配置类;为MQ消息
测试类
Test 结尾
 ,  表示用来测试类的
方法命名
方法命名采用小驼峰的形式 , 首字小写 , 往后的每个单词首字母都要大写 。和类名不同的是 , 方法命名一般为动词或动词短语 , 与参数或参数名共同组成动宾短语 , 即动词 + 名词 。一个好的函数名一般能通过名字直接获知该函数实现什么样的功能 。
场景约束示例
返回真伪值
is/can/has/needs/
/
用于检查
/
/
按需执行
/try//
//
数据相关
get//save/// / ///
/ime
生命周期
/pause/stop/
/pause//stop/
常用动词对
split/join、/、bind/、 /、lanch/run、/、build/、 /、/、push/pull、enter/exit、 /、/
重构技巧 提炼方法
多个方法代码重复、方法中代码过长或者方法中的语句不在一个抽象层级 。方法是代码复用的最小粒度 , 方法过长不利于复用 , 可读性低 , 提炼方法往往是重构工作的第一步 。
意图导向编程:把处理某件事的流程和具体做事的实现方式分开 。
/** * 1、交易信息开始于一串标准ASCII字符串 。* 2、这个信息字符串必须转换成一个字符串的数组 , 数组存放的此次交易的领域语言中所包含的词汇元素(token) 。* 3、每一个词汇必须标准化 。* 4、包含超过150个词汇元素的交易 , 应该采用不同于小型交易的方式(不同的算法)来提交 , 以提高效率 。* 5、如果提交成功 , API返回”true”;失败 , 则返回”false” 。*/public class Transaction {public Boolean commit(String command) {Boolean result = true;String[] tokens = tokenize(command);normalizeTokens(tokens);if (isALargeTransaction(tokens)) {result = processLargeTransaction(tokens);} else {result = processSmallTransaction(tokens);}return result;}}复制代码
以函数对象取代函数
将函数放进一个单独对象中 , 如此一来局部变量就变成了对象内的字段 。然后你可以在同一个对象中将这个大型函数分解为多个小型函数 。
引入参数对象
方法参数比较多时 , 将参数封装为参数对象