目录
1.命名
1.命名原则:在明确表达意思的前提下尽量精简
2.名称添加前后缀增强语境,如:add、update、result等,例如:只有List类型变量才能命名为xxxList,譬如一组账号,用accountGroup好一些,除非这一组账号是List类型
2.函数
1.函数要短小,函数的缩进层级不该多于两层,若业务逻辑复杂,做方法抽离
2.函数只做一件事,一件事:即同一抽象层上的一系列步骤
3.开放闭合原则:对扩展开放,对修改闭合;
单一权责原则:一个类,只有一个引起它变化的原因。应该只有一个职责。每一个职责都是变化的一个轴线,如果一个类有一个以上的职责,这些职责就耦合在了一起。当一个职责发生变化时,可能会影响其它的职责。另外,多个职责耦合在一起,会影响复用性。
4.函数命名:描述性名称,函数越短小,功能越集中,就越便于取个好名字;长而具有描述性的名称要比短而令人费解的名称好
5.函数参数:最理想的参数数量是零(零参数函数),其次是一(单参数函数),再次是二(双参数函数),应尽量避免三(三参数函数),尽量不使用三个以上(多参数函数),三个或三个以上参数就要考虑封装实体类
6.不要向函数里传入布尔类型参数,应该根据true和false分成两个函数
7.最好能将try/catch代码块的主体部分抽离出来,代码更利于理解和修改,如下代码,将test1业务代码抽离出来
public void test(){
try{
test1();
}catch(Exception e){
logError(e);
}
}
private void test1(){
...
}
8.错误处理就是一件事,所以一个try/catch块就应该是一个函数,如7代码所示,test方法
3.注释
好注释:声明版权之类的信息;对意图的解释;对于使用代码的一些警示;todo注释等等
4.格式
4.1 垂直格式
1.用大多数为200行、最长500行的单个文件构造出色的系统
2.每组代码行展示一条完成的思路,这些思路用空白行区隔开
3.空白行隔开概念,靠近的代码行则暗示了他们之前的紧密关系
4.垂直距离:
变量声明应尽可能靠近其使用位置;
循环中的控制变量应总是在循环语句中声明;
实体变量应放在类的顶部声明;
相关函数:若一个函数调用了另一个函数,就应该将他们放在一起,而且调用者应该放在被调用者的上方;
概念相关的代码应该放在一起,例如重载函数,拥有共同的命名命名模式,执行同一基础任务的不同变种函数。
4.2 横向格式
1.应该尽力保持代码行短小,一行字符的上限为120个
2.空格字符将紧密的事物连接到一起,也将相关性较弱的事物分隔开
赋值操作符前后的空格字符加强了分隔效果;
函数名和做圆括号之间不加空格,表示函数与其参数密切相关。
5.对象和数据结构
1.数据抽象:类并不能简单的用取值器和赋值器将其变量推向外间,而是暴露抽象接口,以便用户无需了解数据的实现就能操作数据的本体。例如以下代码:eg2比较好,以抽象形态表述数据
// eg1:具象机动车
public interface vehicle {
double getFuelTankCapacityInGallonds(); // 获取油箱容量
double getGallondsOfGasonline(); // 获取汽油
}
// eg2:抽象机动车
public interface vehicle {
double getPercentFuelRemaining(); // 获取剩余燃料百分比
}