代码书写规范(Java)[2]

[入库:2005年8月18日] [更新:2007年3月25日]

本文简介:选择自 pq5326 的 blog

/**
 * packet counters
 */
 
protected int[] packets;
 
public 的成员变量必须生成文档(javadoc)。proceted、private和 package 定义的成员变量如果名字含义明确的话,可以没有注释。

. 存取方法
 
接下来是类变量的存取的方法。它只是简单的用来将类的变量赋值获取值的话,可以简单的写在一行上。(个人认为尽量分行写)

/**
 * get the counters
 * @return an array containing the statistical data.  this array has been
 * freshly allocated and can be modified by the caller.
 */
 
public int[] getpackets()
{
  return copyarray(packets, offset);
}

public int[] getbytes()
{
 return copyarray(bytes, offset);
}

public int[] getpackets()
{
 return packets;
}

public void setpackets(int[] packets)
{
 this.packets = packets;
}
 
其它的方法不要写在一行上

. 构造函数

接下来是构造函数,它应该用递增的方式写(比如:参数多的写在后面)。

访问类型("public","private" 等.)和任何"static","final"或"synchronized"应该在一行中,并且方法和参数另写一行,这样可以使方法和参数更易读。

public
counterset(int size)
{
   this.size = size;
}

. 克隆方法
 
如果这个类是可以被克隆的,那么下一步就是 clone 方法:

public
object clone()
{
 try
   {
     counterset obj = (counterset)super.clone();
     obj.packets = (int[])packets.clone();
     obj.size = size;
     return obj;
   } 
   catch(clonenotsupportedexception e)
   {
    throw new internalerror("unexpected clonenotsupportedexception: "
          + e.getmessage());
   }
}

. 类方法

下面开始写类的方法:

/**
 * set the packet counters
 * (such as when restoring from a database)
 */
protected final
void setarray(int[] r1, int[] r2, int[] r3, int[] r4)
  throws illegalargumentexception
{
 //
   // ensure the arrays are of equal size
   //
   if (r1.length != r2.length || r1.length != r3.length || r1.length != r4.length)
  throw new illegalargumentexception("arrays must be of the same size");
   system.arraycopy(r1, 0, r3, 0, r1.length);
   system.arraycopy(r2, 0, r4, 0, r1.length);
}

. tostring 方法

无论如何,每一个类都应该定义 tostring 方法:

public
string tostring()
{
 string retval = "counterset: ";
    for (int i = 0; i < data.length(); i++)
    {
       retval += data.bytes.tostring();
       retval += data.packets.tostring();
    }
    return retval;
}

. main 方法

如果main(string[]) 方法已经定义了, 那么它应该写在类的底部.


四、函数编写风格

. 函数的命名

通常,函数的命名也是以能表达函数的动作意义为原则的,一般是由动词打头,然后跟上表示动作对象的名词,各单词的首字母应该大写。另外,还有一些函数命名的通用规则。如取数,则用get打头,然后跟上要取的对象的名字;设置数,则用set打头,然后跟上要设的对象的名字;而对象中为了响应消息进行动作的函数,可以命名为on打头,然后是相应的消息的名称;进行主动动作的函数,可以命名为do打头,然后是相应的动作名称。类似的规则还有很多,需要程序员多读优秀的程序,逐渐积累经验,才能作出好的函数命名。

. 函数注释

系统自动生成的函数,如鼠标动作响应函数等,不必太多的注释和解释;

对于自行编写的函数,若是系统关键函数,则必须在函数实现部分的上方标明该函数的信息,格式如下:

/**
* 函数名:
* 编写者:
* 参考资料:
* 功  能:
* 输入参数:
* 输出参数:
* 备  注:
*/

希望尽量遵循以上格式。


五、符号风格

. 总体要求

对于各种符号的定义,都有一个共通点,就是应该使用有实际意义的英文单词或英文单词的缩写,不要使用简单但没有意义的字串,尽可能不使用阿拉伯数字,更切忌使用中文拼音的首字母。如这样的名称是不提倡的:value1,value2,value3,value4 …。

例如:
file(文件),code(编号),data(数据),pagepoint(页面指针), faxcode(传真号) ,address(地址),bank(开户银行),……

. 变量名称

a. 变量名前缀的约定

变量类型    前缀   示例
integer     int    intcount
byte        byt    bytmove
short       sht    shtresult
long        lng    lngtotal
float       flt    fltaverage
double      dbl    dbltolerangce
boolean     bln    blnisover
char        chr    chrinput
array       arr    arrdata

变量名一般要有一定的表达义,变量名中的每一个单词的第一个字母都要大写出(除去第一个单词外)

b. 描述性变量名和过程名:

变量名或过程名的主体使用大小写混合格式并且尽量完整地描述其目的,另外过程名应以动词开始如:initnamearray ,closedialog

. 对象名的约定:

对象名的前缀约定:

本文关键:代码书写规范(Java)
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top