1 类名是名词或者名词短语
2 方法名应是动词或者动词短语
3 重载构造器时,使用描述了参数的静态工厂方法名,技巧:将构造器设为private
4 动词表示要准确,例如AddSegment 或者AppendSegment
5 层级抽象
6 if else while语句中 代码块只有一行逻辑清晰
7 一个函数一件事,事情的步骤逻辑清晰易懂,不同步骤一个方法,方法时同层级的
8 向下原则:从上到下,每个函数的后面跟着位于下一个抽象层级的方法
9 参数越少越好,方法的参数过多,并且重复利用,证明该提取类
10 类的内聚性要强,每个方法中充分运用了每个类变量,证明内聚性强
11 若参数需要对输入参数进行转换操作,结果要在返回值上体现出来
12 判断与做事的代码分开写
13 用try catch 用异常代码错误码,并且新的异常会从异常类中派生出来
14 也可以将try catch抽离,它搞乱了代码的结构
15 错误处理就是一件事
16 只有一个参数的方法:建议使用动词+名词的结构
17 相关联性强的代码不要相隔太远
18 实体变量java中习惯放在开头、相关函数从上向下放、概念相关的放在一起--像报纸一样,先总体概括,然后是细节展开
19 代码空格 (a + b)/(2*3) 括号和数字之间无空格表示关系紧密, *前后没空格代表优先级高
20 编码风格要统一,空行、变量、缩进、类名,不同文件的编码风格也要统一
21 对象和数据结构
接口中要以哪种形式体现数据:x y 百分比 要根据实际情况而定
数据结构-面向过程,数据不变化,对数据操作函数改变时直接增加函数jike;但增加数据项时,所有函数都要修改
面向对象:难以添加类的方法,增加一个功能时,所有方法都要改变,虽然数据项容易修改。
22 错误处理
将异常判断分别写到各个方法中,不影响主流程
先写try-catch-finally语句
异常得到堆栈信息,若有日志,传递给catch块具体异常类等信息
有时需要根据调用者需要定义异常类,打包类
不要返回null,list的空异常可以返回 conections.emptylist();
别传递NULL值
23 边界
利用第三方库时,要学习写学习性测试,将测试用例聚焦在我们想用的API的功能上
24 类
短小类,类大是因为权责过多
单一权责原则(SRP)
内聚:折成小函数,要把多个变量传递下去(创建类,内聚变量)
类中方法多时:将方法改成不同类或者函数,减少之间的影响--公共部分提炼出接口来
依赖倒置原则,IOC,也叫控制反转,将函数想用的方法变成由其他的对象等去调用。
依赖注入原则,DIP
25 字符串参数