黑马程序员_java常见编码规则
2012-09-16 11:11
288 查看
------- android培训、java培训、期待与您交流! ----------
1、规则1 数据库操作、IO操作等需要使用结束close()的对象必须在try -catch-finally 的finally中close(),如果有多个IO对象需要close(),需要分别对每个对象的close()方法进行try-catch,防止一个IO对象关闭失败其他IO对象都未关闭,特别是在关闭数据库的连接,示例如下:
2、规则2 自己抛出的异常必须要填写详细的描述信息,便于问题的定位:
3、规则3 当心运算符的优先级,养成用括号明确表达式的操作顺序,避免使用默认的优先级,因为记忆不往往保证正确!
4、规则4 不要使用不易理解的数字来代替状态,应该用有意义的标识来代替状态。涉及物理状态或者含有物理意义的常量,不应直接使用数字,必须用有意义的静态变量或者枚举来代替。
5、规则5 所有的数据类必须重写toString()、hashCode()、equals() 方法,toString()方法返回该类有意义的内容。hashCode()和equals()可以用开发工具eclipse生成。
6、规则6 不要使用 System.out 与 System.err 进行控制台打印,应该使用工具类(如:日志工具)进行统一记录或者打印。
说明:代码发布的时候可以统一关闭控制台打印,代码调试的时候又可以打开控制台打印,方便调试。
7、规则7 合理消除else ,用return尽早的返回,避免逻辑过长,容易产生bug :
8、规则8 对覆盖/重写父类的方法时,必须进行@Override声明:
好处:这样做可以显示的标识此方法时覆盖父类的方法,保证覆盖父类的方法时不会因为单词写错而造成错误。
9、规则9 常量名使用全大写的英文描述,英文单词之间用下划线分隔开,并且使用static final来修饰:
10、规则10 Java1.4中大量字符串的相加操作应该使用StringBuffer,Java5.0以上版本大量字符串的“相加”操作如果不涉及到线程安全应该使用StringBuilder,如果涉及到线程的安全问题,则要使用StringBuffer,StringBuilder的性能优于StringBuffer,但是前者是非线程安全的。
11、规则11 IO操作流使用有Buffer功能的类:
------- 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"; } } } |
好处:这样做可以显示的标识此方法时覆盖父类的方法,保证覆盖父类的方法时不会因为单词写错而造成错误。
@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培训、期待与您交流! ----------
相关文章推荐
- Java几种常见的编码方式
- java中包命名常见规则
- 黑马程序员_java基础笔记(14)...交通灯管理系统_编码思路及代码
- Java中常见编码格式
- java验证身份证号码及编码规则和提取相应信息
- 黑马程序员_Java高新技术——反射,常见名词解释
- 黑马程序员——JAVA常见错误整理
- Java几种常见的编码方式
- Java常见的命名规则
- Java编码常见的Log日志打印问题
- 编码常见问题(PL/SQL和Java)
- JAVA几种常见编码格式
- 黑马程序员_Java编码易疏忽的十个问题
- 黑马程序员_java基础笔记(15)...银行业务调度系统_编码思路及代码
- 黑马程序员_常见java问题小计
- Java一些编码规则
- 黑马程序员_Java 枚举7常见种用法
- 黑马程序员—java技术blog—第九篇一些常见的基础语法概述
- JAVA常见的编码问题
- java中包命名常见规则