4、关于代码规范

 代码规范对程序员的重要性:

1、在软件开发生命周期中,有80%的时间是用在维护上

2、几乎所有的软件维护者都不是创使人

3、迭代式开发,必须要有清晰、可读性强的代码,以便于快速迭代

4、敏捷开发时,对应文档的输出不是减少,而是更加实用,因此,可交付的易读的代码更为重要了

5、协同协同,必需确保在编码时遵循统一的规范

编码规范是必需的,每个参与人必需严格遵循该规范进行编码。

4.1、命名规范

基本原则:

1、采用英文全称进行命名

2、保持各层级名称基本统一

3、命名英文单词用全称,避免用简称

4.1.1、模块命名规范

作用:对于系统子模块进行命名,从而区分各子模块的含义。

要求:子模块名称采用子模块的英文简写,一般如果名称由多个英文单词组成时,采用首字母组合;如果由单个英文单词组成时,取该该单词的简写。

职责:产品经理负责进行命名

模块命名表:

序号

简称

全称

中文

1

SYS

System

系统管理

2

BASE

Base Data

基础数据

3

PPM

Project Plan Manger

项目计划管理

4




5




 

 

 

 

 

 

4.1.2、数据库命名规范

数据库对象包括(表,视图,存储过程,函数等),应遵守下面命名规则,其中(AAA是模块简称,例如: SYS、BASE、PPM等等)

对象类型

格式

说明

备注

Table

AAA_DDDDD_T

AAA = 模块简称

DDDDD  = 表对象

T  = Table的简写

1、表名不超过32个英文字符

2、DDDDD为表名称,采用英文单词,多个英文单词时,用下划线隔开

3、例如:SYS_USER_ROLE_T

View

AAA_DDDDDD_V

AAA = 模块简称

DDDDD  = 视图对象

V  = View的简写

1、视图名不超过32个英文字符

2、DDDDD为视图名称,采用英文单词,多个英文单词时,用下划线隔开

3、例如:SYS_MENU_V

Sequence

AAA_DDDDDD_S

AAA_DDDDD  = 表对象

S  = Sequence的简写

1、AAA_DDDDD同表对象

2、例如:SYS_MENU_S

Procedure

AAA_DDDDD_PRC

AAA = 模块简称

DDDDD  = 存储过程方法名

PRC  = Procedure的简写

1、表名不超过32个英文字符

2、DDDDD为存储过程方法名,采用英文单词,多个英文单词时,用下划线隔开

3、例如:AP_VENDOR_PRC

Function

AAA_DDDDD_FUN

AAA = 模块简称

DDDDD  = 函数方法名

FUN  = Function的简写

1、表名不超过32个英文字符

2、DDDDD为函数方法名,采用英文单词,多个英文单词时,用下划线隔开

3、例如:AP_VENDOR_FUN

Package

AAA_DDDDD_PKG

AAA = 模块简称

DDDDD  = 包名称

PKG  = Package的简写

1、表名不超过32个英文字符
2、DDDDD为函数方法名,采用英文单词,多个英文单词时,用下划线隔开
3、例如:AP_VENDOR_PKG

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.1.3、程序文件命名规范

1、文件扩展名:

文件类型

扩展名

Java source

.java

Java bytecode

.class

Java archive

.jar

WAR file

.war

EAR file

.ear

XML Document

.xml

Property file

.properties

Java Server Page

.jsp

HTML Page

.html

Java Script

.js

CSS

.css

 

 

 

 

 

 

 

 

 

 

 

 

 

2、JAVA文件命名

文件属性

扩展名

格式

说明

VO

.java

DddddVO

Ddddd:表示业务对象,一般与表对象保持一致,类名称首字母大写,后面采用驼峰状命名

VO:表示该对象为VO对象

DAO Interface

.java

IDddddDao

I:Interface简写

Ddddd:表示业务对象,一般与表对象保持一致,类名称首字母大写,后面采用驼峰状命名

Dao:表示该接口为Dao接口

DAO Implement

.java

DddddDaoImpl

Ddddd:表示业务对象,一般与表对象保持一致,类名称首字母大写,后面采用驼峰状命名

Dao:表示该对象为Dao层对象

Impl:表示该对象是一个实现类

Service Interface

.java

IDddddService

I:Interface简写

Ddddd:表示业务对象,一般与表对象保持一致,类名称首字母大写,后面采用驼峰状命名

Dao:表示该接口为Service层接口

Service Implement

.java

DddddServiceImpl

Ddddd:表示业务对象,一般与表对象保持一致,类名称首字母大写,后面采用驼峰状命名

Dao:表示该对象为Service层对象

Impl:表示该对象是一个实现类

Controller

.java

DddddController

Ddddd:表示业务对象,一般与表对象保持一致,类名称首字母大写,后面采用驼峰状命名

Controller:表示该对象是一个UI类

JSP

.jsp

ddddd_xxxx

Ddddd:表示业务对象,一般与表对象保持一致,文件名称首字母小写,后面采用驼峰状命名

xxxx:表示该页面属于那种类型操作页面,一般为(edit、detail、report等,分别表示:编辑表单、明细查看、报表页面等)

JS

.js

ddddd_xxxx

一般与JSP页面一一对应

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.1.4、JAVA类及属性、方法命名规范

1、常量或枚举命名:采用有业务意义的单词组成;英文单词为全字母大写;多个英文单词用下划线分开;

2、属性命名:采用有业务意义的英文单词组成,一般为名词;VO属性与数据库字段保持一致;首字母小写;多个英文单词采用驼峰状进行命名;

3、方法命名:采用具体方法的英文单词,一般形式为动词,或动词 + 名词格式;首字母小写;多个英文单词采用驼峰状进行命名;常用的动词:set、get、create、add、modify、update、delete、remove、select、save等

4、变量命名:主要指程序块中应用到的变量。变量命名是避免采用无意义的i、str等命名规则,尽量采用的规则是与被定义的类型一致的业务对象名称。如:List<User> userList、Array<User> userArray等方式。 

5、Controller RequestMapping命名:格式:/相对路径/模块简称/contraller类名称(不包含contraller单词)/方法名称。

4.1.5、HTML、JavaScript、CSS命名规范

  1、HTML中标签和控件的命名规则:采用与业务对象一致的英文单词,一般格式为控件类型简写 + 业务对象名称;所以字母采用小写;多个单词采用驼峰装进行命名;

控件

简写

中文

easyui-panel

pnl

面板

easyui-tabs

tab

选项卡

easyui-accordion

acc

分类

easyui-layout

lyt

布局

easyui-menu

mnu

菜单

easyui-menubutton

mbtn

菜单按钮

easyui-splitbutton

spl

分割按钮

form

frm

表单

easyui-window

win

窗体

easyui-dialog

dlg

对话框

easyui-datagrid

dgd

数据表格

easyui-propertygrid

pgd

属性表格

easyui-tree

tree


easyui-treegrid

tgd

树形表格

portal

ptl

门户

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    说明:form中的控件如textbox、combobox等,可以直接采用与业务对象属性一致的名称;具体命名办法参考:4.1.4中的属性命名。

  2、Javascript的命名规则

    Javascript类命名:一般与文件名称一样;针对与页面匹配的Javascript的类命名规则:文件名称+下划线+page(如:project_edit.jsp页面对应的JS文件名称为project_edit.js,那么该js的类名称为:project_edit_page)。

    javascript全局属性命名:由于该JS对象属于页面的附属对象,因此为了避免属性与页面属性出现冲突或歧义,JS中定义的属性前必须加“p_”。具体定义的属性命名规则采用有业务意义的英文单词;多个英文单词采用下划线隔开;英文单词全部采用小写;

    javascript事件方法命名:事件对象(不包含控件简称部分) + 下划线 + 事件名称(一般有:change、click、dblclick、focus、keydown、keypress、keyup、load、mousedown、mousemove、mouseout、mouseover、mouseup、reset、resize、select、submit、unload)。

    javascript一般方法命名:采用具体方法的英文单词,一般形式为动词,或动词 + 名词格式;所有字母小写,多个英文单词采用下划线隔开;常用的动词:set、get、create、add、modify、update、delete、remove、select、save等

  3、CSS命名规则:采用全部小写方式;由于属于自定义的CSS,因此最好增加jasmp,表示属于jasmp平台自定义的;多个单词采用减号隔开;

4.2、程序注释

4.2.1、类注释

  1、目的:主要标注该类的作用,对类进行简单描述;记录类的作者和类的创建日期

  2、格式:

/**
* @ClassName: ${type_name}
* @Description: ${todo}(这里用一句话描述这个类的作用)
* @author 作者姓名   
* @date ${date} ${time}
*
* ${tags}
*/

4.2.2、属性注释

  1、目的:描述该属性的意义;对于属性有特殊含义的需要进行特别书面

  2、格式:

/**
* @Fields ${field} : ${todo}(用一句话描述这个变量表示什么)
*/   

4.2.3、方法注释

  1、目的:描述该方法的主要意义;对方法的参数进行说明

  2、格式:

/**
* @Title: ${enclosing_method}
* @Description: ${todo}(这里用一句话描述这个方法的作用)
* @param ${tags}    设定文件
* @return ${return_type}    返回类型
* @throws
*/

4.2.5、代码段注释

  1、目的:行注释是一个非常短的注释,对当前代码片段进行解释说;行尾注释写在该代码块的上面;

  2、格式:

    // 用一句话描述下面代码具体的功效

4.3、代码其他要求

4.3.1、代码格式

  1、缩进:Tab键的标准占用字符为4个空格字符

  2、行长度:每行代码最多80个字符

  3、换行规则:当一行或者一个表达式无法在一行内完成,则应该按照如下规则进行换行处理

    1)在逗号后换行

    2)运算符后换行

    3)换行后尽量使表达式排列整齐

    4)代码换行后,按照下一行比上一行多4个空字符进行缩进

  4、定义与声明:

    每个声明语句各成一行,如有特殊用途的可在后面加行尾注释

    正确示例:

int level;  // indentation level
int size;  // size of table

    错误示例:

      int level, size;

  5、定义位置:声明变量是应注意位置,至少是在一块代码的开始处(一块代码指的是用”{”和”}”包含的代码块)。不要在使用时才去声明边量,他很容易让人产生混乱,不小心还会引发错误。

  6、方法长度:一个方法代码行数保持在50行以内,超过50行的方法可以拆分成多个方法实现。(备注,代码行数指的是代码语句行数,不是编辑器行数)

  7、类方法数:一个类中方法数量保持在20个方法以内,超过20个应考虑拆分成多个类进行实现。