软件工程建设标准Word文件下载.docx
《软件工程建设标准Word文件下载.docx》由会员分享,可在线阅读,更多相关《软件工程建设标准Word文件下载.docx(16页珍藏版)》请在冰豆网上搜索。
Ø
使用可以准确说明变量/字段/类/接口/包等的完整的英文描述符。
例如,采用类似firstName,listAllUsers或CorporateCustomer这样的名字,尽量不使用汉语拼音及不相关单词命名,严禁使用汉语拼音首字母组合命名,虽然Java支持Unicode命名,但本规范规定对包、类、接口、方法、变量、字段等不得使用汉字等进行命名。
采用该领域的术语。
如果用户称他们的“客户”(clients)为“顾客”(customers),那么就采用术语Customer来命名这个类,而不用Client。
采用大小写混合,提高名字的可读性。
一般应该采用小写字母,但是类和接口的名字的首字母,以及任何中间单词的首字母应该大写。
包名全部小写。
避免使用长名字(最好不超过25个字母)。
避免使用相似或者仅在大小写上有区别的名字。
避免使用数字,但可用2代替to,用4代替for等,如:
go2Jsp。
2.1包命名
包名一般以项目或模块名命名,少用缩写和长名,一律小写,正则表达式为:
^[a-z]+(\.[a-zA-Z_][a-zA-Z0-9_]*)*$。
包名按如下规则组成:
[基本包].[项目名].[模块名].[子模块名]..
例如:
OA项目的包命名前三级为:
com.well.oa。
不得将类直接定义在基本包下,所有项目中的类、接口等都当定义在各自的项目和模块包中。
2.2类命名
类名采用大小写混合的方式,每个单词的首字母大写。
尽量使你的类名简洁而富于描述。
使用完整单词,避免缩写词(除非该缩写词被更广泛使用,像URL,HTML)。
一般采用名词。
2.3接口命名
大小写规则与类名相似。
接口可带I前缀或able、ible、er等后缀。
2.4方法命名
方法名是一个动名结构,采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。
正则表达式为:
^[a-z][a-zA-Z0-9]*$
类中常用方法的命名:
1.类的获取方法(一般具有返回值)一般要求在被访问的字段名前加上get,如
getFirstName(),getLastName()。
2.类的设置方法(一般返回类型为void):
被访问字段名的前面加上前缀set,如
setFirstName(),setLastName().
3.类的布尔型的判断方法一般要求方法名使用单词is做前缀,如isPersistent()isString()。
或者使用具有逻辑意义的单词,例如equal或equals。
4.类的普通方法一般采用完整的英文描述说明成员方法功能,第一个单词尽可能采用动词,首字母小写,如openFile(),addCount()。
5.构造方法应该用递增的方式写。
(参数多的写在后面)。
6.toString()方法:
一般情况下,每个类都应该定义toString(),其格式为:
publicStringtoString(){…}。
2.5类成员参数
和类命名一样,但是首字母小写。
参数命名和类成员命名一致。
'
^[a-z][a-zA-Z0-9]*$'
2.6局部变量
局部变量名不应以下划线或美元符号开头,这个是java命名的惯例。
局部变量建议全部使用小写。
除了局部变量名外,所有实例,包括类,类常量,均采用大小写混合的方式。
变量名应简短且富于描述。
变量名的选用应该易于记忆,即,能够指出其用途。
尽量避免单个字符的变量名,除非是一次性的临时变量(往往用在for循环中),临时变量通常被取名为i,j,k,m和n,它们一般用于整型;
c,d,e,它们一般用于字符型。
^[a-z][a-z0-9]*$
2.7常量
类常量和ANSI常量(static,final字段)的声明,应该全部大写,单词间用下划线隔开。
(尽量避免ANSI常量,容易引起错误)。
^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$
2.8集合
集合,例如数组和列表,命名应采用完整的英文描述符,适当使用集合缩写后缀。
如:
ListproductList=newList();
//产品列表
ArrayuserArray=newArray();
//用户列表
2.9魔法数字
不允许使用魔法数字,可以定义为常量使用。
在程序里经常会用到一些量,它是有特定的含义的。
例如,现在我们写一个薪金统计程序,公司员工有50人,我们在程序里就会用50这个数去进行各种各样的运算。
在这里,50就是"
神秘的数"
。
当别的程序员在程序里看到50这个数,将很难知道它的含义,造成理解上的困难。
在程序里出现"
会降低程序的可读性、可维护性和可扩展性,故规定不得出现此类"
魔法数字"
避免的方法是把神秘的数定义为一个常量。
注意这个常量的命名应该能表达该数的意义,并且应该全部大写,以与对应于变量的标识符区别开来。
例如上面50这个数,我们可以定义为一个名为NUM_OF_EMPLOYEES的常量来代替。
这样,别的程序员在读程序的时候就可以容易理解了。
2.10其他
命名时应使用复数来表示它们代表多值(数组)。
orderItems。
2.11项目分层
1、实体类
实体类使用规范
1.表名以所在模块的简写为前缀;
2.实休类只作为一个JavaBean对象
3.类的字段不可使用int、short、long、char、double、float、boolean和byte等基本数据类型,要使用基本数据类型对应的包装类Integer、Short、Long、Character、Double、Float、Boolean和Byte等可用工具类com.wellsoft.pt.utils.bean.PrimitiveTypeWrapperUtils对其属性赋初始值
2、DAO数据访问
DAO层实现类命名规范
以Dao结束,如UserDao
3、Service服务
Service服务层接口命名规范
以Service结束,如UserService
实现类命名规范
以ServiceImpl结束,如UserServiceImpl
4、控制器
层控件器命名规范
以Controller结束,如UserController
5、JSP页面展示
jsp文件命名规范
统一使用小写字母,若有多个单词用下划线"
_"
分开,一般以动词结束,如
user_list.jsp列表
user_view.jsp查看
user_edit.jsp编辑
user_maintain.jsp维护
user_new.jsp新增
6、值对象
数据从页面收集到后台控制器的值对象命名规范
1、值对象以Bean为结尾,如UserBean,收集后再用工具类com.wellsoft.pt.utils.bean.BeanUtils转换为实体类User
2、直接使用实体类如User作为值对象收集页面数据
3.代码排版规范
排版主要为了界面规范,一方面为了代码清晰,另外可以方便进行代码合并时减少因排版引起不一致。
在eclipse中可以使用固定排版模板,完成一致的排版样式。
所有项目开发人员必须引入统一的排版模板。
主要包括缩进,空格,空行,大括号,换行,长度等方面。
3.1空行
空行往往使用在如下方面。
1)包的声明之后
2)Import声明之前和之后
3)Import组之间
4)类声明之间
5)类成员变量和方法声明之前
6)在同一类型声明之前
7)对于已存在的空行会整理成一行
对于特别需要分开的行也可以添加空行,往往是为了逻辑划分。
3.2空格
1)逗号后面一律加空格
2)类和匿名类的左大括号之前加空格
3)方法和构造函数的左大括号之前加空格
4)可变个数的参数的冒号后面加空格
voidformat(Strings,Object...args){
}
5)标识符(label)后面的冒号后要加空格,目前不推荐使用标识符:
6)注释类型@前面和左大括号之前加空格。
3.3大括号(Braces)
1)左大括号一律与它所从属的类,接口和关键字处于同一行
2)左大括号一律与它所从属的方法和构造函数处于同一行
3)左大括号一律与它所从属的枚举声明和枚举常量处于同一行
4)左大括号一律与它所从属的注释类型声明处于同一行
5)数组初始化中左大括号一律与声明处于同一行:
6)所有区域都要使用大括号,例如if语句中只有一条语句也要用大括号括起来。
3.4换行(NewLines)
1)局域变量(localvariables)和成员不与其注释在同一行,不许使用与代码同行的注释,注释往往放在其注释内容上。
2)一行最长为120个字符。
3)同一行不能有多个声明,声明放置到新行中
3.5长度(Length)
1)文件长度不超过1000行,建议。
2)方法长度不超过200行,建议。
4.声明
声明的基本原则是遵守Java语言规范,并遵从习惯用法。
4.1类、接口
声明定义:
[可见性][('
abstract'
|'
final'
)][Class|Interface]class_name
[('
extends'
implements'
)][父类或接口名]
publicclassLoginActionextendsBaseActionimplemnetsActionListener方法
良好的程序设计应该尽可能减小类与类之间耦合,所遵循的经验法则是:
尽量限制成员函数的可见性。
如果成员函数没必要公有(public),就定义为保护(protected);
没必要保护。
4.2方法
)]['
synchronized'
][返回值类型]method_name(参数
列表)[('
throws'
)][异常列表]
publicListlistAllUsers()throwsDAOException
若有toString(),equals(),hashCode(),colone()等重载自Obje