翻阅别人整理的一份《Java语言编码规范(Java Code Conventions)》。我从其中抽出了我觉得自己会犯的错误,或者是阅读代码的时候常常遇到的问题罗列出来。自我警示而已。不能算什么文章。

 
  
  1. 我翻阅的此文档版权如下: 
  2.  
  3. 译者 晨光(Morning) 
  4.  
  5. 搜集整理:华竹技术实验室http://sinoprise.com 
  6.  
  7. 简介: 
  8.  
  9. 本文档讲述了Java语言的编码规范,较之陈世忠先生《c++编码规范》的浩繁详尽,此文当属短小精悍了。而其中所列之各项条款,从编码风格,到注意事项,不单只Java,对于其他语言,也都很有借鉴意义。因为简短,所以易记,大家不妨将此作为handbook,常备案头,逐一对验。 
  10.  
  11. 声明: 
  12.  
  13. 如需复制、传播,请附上本声明,谢谢。原文出处:http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html, 译文出处:http://morningspace.51.net/,moyingzz@etang.com 
  • 声明:

推荐一行一个声明,因为这样利于写注释。即:

 
  
  1. int  size;//size of XXXX 
  2. int   length;//length of  XXXX 

 

不要将不同类型的变量放在同一行。
 
  
  1. int foo ,fooarray[];//居然可以这么干。我从来没干过。。。见识了。 

比较整齐的制表符方式: 

 
  
  1. int     size;           //size of XXXX 
  2. int     length;         //length of XXXX 
  3. Object  currentyXXXX;   //currently selected XXXX 
  • 初始化

尽量在声明局部变量的同时初始化。唯一不这么做的理由是变量的初始值依赖于某些先前发生的计算。

 

  • 语句

简单语句:

每行最多包含一条语句。

复合语句:

大括号可以被用于所有语句,包括单个语句。

见过有人写switch语句 每个case后又有一对大括号。

switch语句的某个case后面不需要break的时候应该写注释说明。。

 

if语句总是用 {}括起来。避免使用如下容易引起错误的格式 

 
  
  1. if(condition) 
  2.       statement; 

 项目里面这样的写法比比皆是,看着就像出门没穿内裤一样,感觉又危险又不舒服。 

  • 命名规则

临时变量

整型变量常用 i j k  m n

字符型 用:c  d  e

实例变量

大小写规则和变量相似,除了前面需要一个下划线。

 

  • 变量赋值

避免在一个语句中给多个变量赋相同的值。比如

 
  
  1. fooBar.fChar = barFoo.lchar = ‘c’; //AVOID!! 

 

不用将赋值运算符用在容易与相等关系运算符混淆的地方 . 比如:
 
  
  1. if(c++ = d++){//我痛恨看到这样的代码,看得人都皮发麻。。 

 不要使用内嵌(embedded)赋值运算符试图提高运算是的效率。不知道是否真的可以提高运算效率。。   这样的代码看着让人崩溃。

 
  
  1. d = (a = d + c) + r; //AVOID !!

应该写成

 
  
  1. a= b +c; 
  2. d = a + r; 
  • 返回值

让你的程序结果符合目的。例如: 

 
  
  1. if(booleanExpression){ 
  2.       return ture; 
  3. }else
  4.       return false

完全可以写成 。。。 

 
  
  1. return  booleanExpression; 

 

还有我曾经见过。。 这样么写的。。
 
  
  1. if(!booleanExpression){ 
  2.     //语句A 
  3. }else
  4.     //语句B 

实在想不通 为什么不写成 

 
  
  1. if(booleanExpression){ 
  2.      //语句B 
  3. }else
  4.      //语句A 

比较喜欢逆向思维?还是怎么?其实也可以理解,或许是因为项目中刚开始只需要考虑!booleanExpression的情况,而后来又有需求两种情况都考虑。所以就产生了这样的代码。

类似的还有:

 
  
  1. if(condition){ 
  2.       return x; 
  3. return y; 

应该写做:

 
  
  1. return (condition ? x : y);