购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.3 代码规范

大B:“呵呵呵,写得不错,不亏是C大的高材生。”

小A:“师兄你这不是在取笑我嘛。我还有好多问题得请教你哩!”

大B:“行行行……没问题。小师弟好学,师兄哪能袖手旁观的呐!对了,你写代码的时候一定要注要代码的规范。”

小A:“代码规范?”

大B:“嗯,来来来,我说给你听。首先是要注意注释文档的格式,注释文档将用来生成HTML格式的代码报告,所以注释文档必须书写在类、域、构造函数、方法、定义之前。注释文档由两部分组成——描述、块标记。”

例如:

注释

@author LEI
@version 1.10 2005-09-01
public void doGet (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}

大B:“看!前两行为描述,描述完毕后,由@符号起头为块标记。”

大B:“然后是注释的种类。有文件头注释、构造函数注释、域注释方法注释、和定义注释。”

小A:“什么?注释还有那么多的种类的?我以前都没有用心去记过它的喔。师兄能不能给我讲讲每一种注释的功能和要求啊?”

大B:“这有什么问题哩!举些例子来讲,那样你就容易理解多了。”

小A:“嘿嘿!那感情好。”

大B:“文件头注释已结束,需要注明该文件创建时间,文件名,命名空间信息。”

例如:

描述部分用来书写该类的作用或者相关信息,块标记部分必须注明作者和版本。

如:

class Window extends BaseWindow {

...

}

大B:“构造函数注释采用,描述部分注明构造函数的作用,不一定有块标记部分。域注释可以出现在注释文档里面,也可以不出现在注释文档里面。用的域注释将会被认为是注释文档出现在最终生成的HTML报告里面,而使用的注释会被忽略。这个应该注意!”

例如:

boolean isTrigerSuccess = false;

又例如:

boolean isTrigerSuccess = false;

再例如:

int x = 1263732;

大B:“还有就是方法注释,方法注释采用描述部分注明方法的功能,块标记部分注明方法的参数,返回值,异常等信息。定义注释,规则同域注释。”

小A:“喔……原注释还真的是有那么多种类,每个种类都有不同的功能哩!嘿嘿!看来以后我得更认识学习才行哩!”

大B:“呵呵……你能这么想就好喽。对了,小A,注释块标记你知道不?”

小A:“注释块标?嘿嘿,这个……也不知道……”

大B:“没关系,我给告诉你。首先是标记的顺序。”

块标记将采用如下顺序:

…
*
* @param (classes, interfaces, methods and constructors only)
* @return (methods only)
* @exception (@throws is a synonym added in Javadoc 1.2)
* @author (classes and interfaces only, required)
* @version (classes and interfaces only, required. See footnote 1)
* @see
* @since
* @serial (or @serialField or @serialData)
* @deprecated (see How and When To Deprecate APIs)
* …

一个块标记可以根据需要重复出现多次,多次出现的标记按照如下顺序:

@author 按照时间先后顺序(chronological)
@param 按照参数定义顺序(declaration)
@throws 按照异常名字的字母顺序(alphabetically)
@see 按照如下顺序:
@see #field
@see #Constructor(Type, Type...)
@see #Constructor(Type id, Type id...)
@see #method(Type, Type,...)
@see #method(Type id, Type, id...)
@see Class
@see Class#field
@see Class#Constructor(Type, Type...)
@see Class#Constructor(Type id, Type id)
@see Class#method(Type, Type,...)
@see Class#method(Type id, Type id,...)
@see package.Class
@see package.Class#field
@see package.Class#Constructor(Type, Type...)
@see package.Class#Constructor(Type id, Type id)
@see package.Class#method(Type, Type,...)
@see package.Class#method(Type id, Type, id)
@see package

小A:“哇噻!块标记还可以按照时间先后顺序,按照参数定义顺序,按照异常名字的字母顺序哩!师兄,你讲得真详细。看来我得好好得花点心思把它们都记下来才好哩!”

大B:“能记住当然好哩,我再给你讲下标记介绍。”

@param标记

@param后面空格后跟着参数的变量名字(不是类型),空格后跟着对该参数的描述。

在描述中第一个名字为该变量的数据类型,表示数据类型的名字前面可以有一个冠词如:a,an,the。如果是int类型的参数则不需要注明数据类型。例如:

…
* @param ch the char 用用来……
* @param _image the image 用来……
* @param _num 一个数字……
…

大B:“对于参数的描述如果只是一短语,最好不要首字母大写,结尾也不要句号。对于参数的描述是一个句子,最好不要首字母大写,如果出现了句号这说明你的描述不止一句话。如果非要首字母大写的话,必须用句号来结束句子。(英文的句号)”

公司内部添加ByRef和ByVal两个标记,例如:

* @param _image the image ByRef 用来……

说明该参数是引用传递(指针),ByVal可以省略,表示是值传递。

大B:“代码规范大概要点就是这些了。听起来好像很多,只要用心,其实也很容易记的。”

小A:“嘿嘿!师兄,你太历害了!” GfQedn2FfIKTqon1kglcBKTtcbsMbZseQMe6NKIqq2aM+yJWxqxtQUZxy20OWx/k

点击中间区域
呼出菜单
上一章
目录
下一章
×