代码编写规范

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

知识管理系统代码编写规范

一、介绍

本文档为《知识管理系统》代码编写规范,为保证代码风格的一致性和后期的可维护性,文档讲述的内容要求所有开发人员必须遵守。

本规范主要参考了Google Java Style,包括了其他一些业界约定俗成的公约和普遍采用的标准。本规范并非最终标准,一些规定还需再做商讨。

1.1 术语说明

本文档除非特殊说明,否则:

1. 类(class)统指普通类、枚举类、接口和注解类型。

2. 注释(comment)只用来指实现注释(implementation comments)。我们不使用“文

档注释”这样的说法,而会直接说Javadoc。

其他“术语说明”,将在文档中需要说明的地方单独说明。

1.2 文档说明

本文档中的代码并不一定符合所有规范。即使这些代码遵循本规范,但这不是唯一的代码方式。例子中可选的格式风格也不应该作为强制执行的规范。

二、源码文件基础

2.1 文件名

源文件以其最顶层的类名来命名,大小写敏感,文件扩展名为.java。

2.2 文件编码:UTF-8

源码文件使用UTF-8编码。

2.3 特殊字符

2.3.1 空格字符

除了换行符外,ASCII 水平空白字符(0x20)是源码文件中唯一支持的空格字符。这意味着:

1. 其他空白字符将被转义。

2. Tab字符不被用作缩进控制。

2.3.2 特殊转义字符串

任何需要转义字符串表示的字符(例如\b, \t, \n, \f, \r, \", \'和\\等),采用这种转义字符串的方式表示,而不采用对应字符的八进制数(例如\012)或Unicode 码(例如\u000a)表示。

2.3.3 非ASCII 字符

对于其余非ASCII字符,直接使用Unicode字符(例如∞),或者对应的Unicode 码(例如\u221e)转义都是允许的。唯一需要考虑的是,何种方式更能使代码容易阅读和理解。

注意:在使用Unicode码转义,或者甚至是有时直接使用Unicode字符的时候,添加一点说明注释将对别人读懂代码很有帮助。

三、源码文件结构

源码文件按照先后顺序,由以下几部分组成:

1. license 或者copyright 声明信息。(如果需要声明)

2. 包(package)声明语句。

3. import 语句。

4. 类声明(每个源码文件只能有一个顶级类)。

每个部分之间应该只有一行空行作为间隔。

3.1 license 或者copyright 的声明信息。

如果需要声明license 或copyright 信息,应该在文件开始时声明。

3.2 包声明

包声明的行没有行长度的限制。单行长度限制不适用于包声明。

3.3 import语句

3.3.1 不使用通配符import

即,不要出现类似这样的import语句:import java.util.*;

3.3.2 没有行长度限制

import 语句的行没有行长度的限制。单行长度限制不适用于import 语句所在行。

3.3.3 顺序和空行

import语句应该被分为几个组,每个组之间由单行的空行隔开。分组的顺序如下:

1. 所有的静态导入为归为一组。

2. com.sinosoft(项目自带包)包的import归为一组。

3. 第三方包。每个顶级包归为一组。第三方包之间按ASCII码排序。例如:

android, com, junit,org, sun

4. java包归为一组。

5. javax包归为一组。

同一组内的import语句之间不应用空行隔开。同一组中的import语句按ASCII 码排序。

3.4 类声明

3.4.1 只声明一个顶级类

每个源码文件中只能有一个顶级类。

例外:package-info.java,该文件中可没有package-info类。

3.4.2 类成员顺序

类成员的顺序对代码的易读性有很大影响,但这也不存在唯一的通用法则。不同的类可能有不同的排序方式。

重要的是,每个类都要按照一定的逻辑规律排序。维护者应该要能解释这种排序逻辑。比如,新的方法不能总是习惯性地添加到类的结尾,因为这样就是按时间顺序而非某种逻辑来排序的。

3.4.2.1 重载方法:不应该分开

当一个类有多个构造函数,或者多个同名成员方法时,这些函数应该写在一起,不应该被其他成员分开。

四、格式

术语说明:块状结构(block-like construct)指类、成员函数和构造函数的实现部分(大括号中间部分)。注意,在后面的4.8.3.1节中讲到数组初始化,所有的数组初始化都可以被认为是一个块状结构(非强制)。

4.1 大括号

4.1.1 大括号不可省略

大括号一般用在if, else, for, do和while等语句。即使当它的实现为空或者只有一句话时,也需要使用。

4.1.2 非空语句块采用K & R风格

对于非空语句块,大括号遵循Kernighan & Ritchie风格:

•左大括号前不换行。

•左大括号后换行。

•右大括号前换行。

•如果右大括号结束一个语句块或者函数体、构造函数体或者有命名的类体,则右大括号后换行,否则不要换行。例如,当右大括号后面接else或者逗号时,不应该换行。

例子:

1.return new MyClass(){

2.@Override public void method(){

3.if(condition()){

4.try{

5. someting();

6.}catch(ProblemException e){

相关文档
最新文档