黑马程序员_java常见编码规则

------- android培训java培训、期待与您交流! ----------

1、规则1    数据库操作、IO操作等需要使用结束close()的对象必须在try -catch-finally 的finally中close(),如果有多个IO对象需要close(),需要分别对每个对象的close()方法进行try-catch,防止一个IO对象关闭失败其他IO对象都未关闭,特别是在关闭数据库的连接,示例如下:

try{  
	//TODO
}catch(IOException e){  
	//TODO
}finally{   
	try{       
		out.close();   
	}catch(IOException e1){  
		//TODO    
	}finally{   
		try{          
			in.close();    
		}catch(IOException e2){   
			//TODO      
		}  
	}
}

2、规则2   自己抛出的异常必须要填写详细的描述信息,便于问题的定位:

throw new IOException("无法找到文件:"+fileName);

3、规则3   当心运算符的优先级,养成用括号明确表达式的操作顺序,避免使用默认的优先级,因为记忆不往往保证正确!

//如果下面的表达式
word = (high<<8)|low   	(1)
if ((a|b)&&(a&c))       (2)
if ((a|b)<(c&d))       	(3)
//改写为如下形式
word = high<<8 | low   	(1)
a|b&&a&c            	(2)
a|b<c&d          		(3)
//虽然(1)(2)的两种写法对结果不造成影响,但是程序的可读性大大降低,而(3)的两种表达式得到不同的结果

 4、规则4   不要使用不易理解的数字来代替状态,应该用有意义的标识来代替状态。涉及物理状态或者含有物理意义的常量,不应直接使用数字,必须用有意义的静态变量或者枚举来代替。

//如下的代码的可读性较差
if(0 == state){    
	state = 1;    
	//TODO
}
//应该优化成以下的代码
private final static int IDLE = 0;
private final static int BUSY = 1;
private final static int UNKNOWN = -1; 
if(IDLE == state){   
	state = 1;  
	//TODO
}

5、规则5    所有的数据类必须重写toString()、hashCode()、equals() 方法,toString()方法返回该类有意义的内容。hashCode()和equals()可以用开发工具eclipse生成。

public class User{    
	private String name ;   
	private int age ;    
	...   
	
	public String toString (){  
		return "name="+name+",age="+age; 
	}
}

6、规则6   不要使用 System.out 与 System.err 进行控制台打印,应该使用工具类(如:日志工具)进行统一记录或者打印。
      说明:代码发布的时候可以统一关闭控制台打印,代码调试的时候又可以打开控制台打印,方便调试。

7、规则7   合理消除else ,用return尽早的返回,避免逻辑过长,容易产生bug :

改造前改造后
private String getCode(String id){ 
	String retStr ="";   
	if(null==id || "".equals(id)){    
		retStr = "404";   
	}else{     
		String []items = id.split("/");     
		if(items.length<3){    
			retStr = "403";    
		}else{         
			retStr = "401";  
		}   
	}    
	return retStr;
}
private String getCode(String id){   
	String retStr ="";   
 	if(null==id || "".equals(id)){  
  		return "404";   
 	}else{    
  		String []items = id.split("/");   
  		if(items.length<3){   
   			return "403";     
  		}else{          
   			return  "401";   
  		}   
 	}
 
}

8、规则8   对覆盖/重写父类的方法时,必须进行@Override声明:

      好处:这样做可以显示的标识此方法时覆盖父类的方法,保证覆盖父类的方法时不会因为单词写错而造成错误。

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
	...
}

9、规则9    常量名使用全大写的英文描述,英文单词之间用下划线分隔开,并且使用static final来修饰:

public static final int MAX_VALUE = 10000;
public static final String FILE_NAME = "log.txt";

10、规则10   Java1.4中大量字符串的相加操作应该使用StringBuffer,Java5.0以上版本大量字符串的“相加”操作如果不涉及到线程安全应该使用StringBuilder,如果涉及到线程的安全问题,则要使用StringBuffer,StringBuilder的性能优于StringBuffer,但是前者是非线程安全的。

StringBuilder sb = new StringBuilder();
for(int i=0;i<100000;i++){ 
	sb.append("it.cast");
}

11、规则11      IO操作流使用有Buffer功能的类:

FileOutputStream fout = new FileOutputStream("test.txt");
BufferedOutputStream bout = new BufferedOutputStream(fout);

for (int i = 0;i < bytes.length; i++){ 
	bout.write();
}

bout.flush();

//说明:具有Buffer功能的流类能起到更好的性能,效率会更高。


 

 


 


------- android培训java培训、期待与您交流! ----------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值