一、封装
- 方法的封装
public class A(){
@AutoWired
B b;
b.methodB();
}
public class B(){
public void methodB(){
methodB1();
methodB2();
}
private void methodB1(){}
private void methodB2(){}
}
//注意: B类中只有methodB是给外部用的,所以是public。而methodB1和methodB2都是给当前类用的,所以用private
- 属性的封装
private int number;
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
//第一是将修改属性的可见性来限制对属性的访问(一般限制为private);第二是要对每个值属性提供对外的公共方法访问,也就是创建'getter'和 'setter'方法(将实例变量的首字母大写,在前面添加'get'或者'set', 变成'getter'和 'setter'方法名)
二、方法提取
要先把变量抽取出来(IDEA中的refactor–>Extract–>variable), 其次在用IDEA中的refactor提取方法
如果这份方法跟业务逻辑无关,可抽取出到util类中,以便以后重用
三、参数提取
四、减少冗余
//before
if (isInRange(longitude)) {
return true;
} else {
return false;
}
//After
return isInRange(longitude);
五、写方法注释
六、配置应该放到properties文件里
用@value注入
七、减少if else嵌套, 平级化if else
if(){
if(){
if(){}
}
}else{}
可根据业务逻辑适当重构成:
if(){}
if(){}
if(){}
if(!stopFileExists){
...业务逻辑
}else{
context.close();
return;
}
//After
if(stopFileExists){
context.close();
return;
}
...业务逻辑
八、类单一职责,方法的单一职责
比如一个类是把一个file转换并存到DB, 这样就不要把loader parser都放到一个类里
**九、一个方法大概保持在15-20行
十、命名 方法名一般时动词 意思表达正确 尽量简单
参考:https://www.cnblogs.com/xiandedanteng/p/12058104.html
- 避免过度使用get作为方法前缀 应该用更精确的动词描述动作,如“请求”request,“获取”acquire,“查找”search/lookfor/find,“查询”inquire,“构建”build 或“创建”create
- 对于变量,一般采用名词命名,如salary;如果其含义较复杂,建议采用形容词+名词的形式,如totalSalary;如果不会产生歧义,可以使用名词+名词的方式,如minerSalavry,flightNumber, carColor
- 对于方法,一般采用动词+名词的方式命名,如drawBullet,cleanScreen; 也可以采用省略动词的介词+名词的形式,如onMessage,onAbort,onExit.
如用于限制范围,可以在名词前加入介词,如要修饰名词,可以在名词前加入形容词,如sumZombieFansCnt。
例如:checkStopFile 不知道check什么,其实是check有没有stop file的
改成 stopfileExists