1、04编码规范JAVAJSPv100开发质量管理规范JAVA&JSP编码规范(V 1.0.0)2011年5月亚信联创股份有限公司文 档 信 息文 档 名 称JAVA&JSP编码规范编 制 部 门计费需求开发部(CTC Billing Requirement Dev Dept.)文 档 编号:BR_Dev_004 文 档 变 更 记 录版 本 编 号版 本 日 期作 者说 明V1.0.02011-5-6陈丽初稿审 核 审核组织审核代表签字时间计费需求开发部陈光进陈光进2011-5-6批 准批准组织批准代表签字时间目 录1 前言 12 基本原则 13 文件目录 13.1 工程目录结构命名规范与约定
2、13.2 项目结构图 24 JAVA编码规范 34.1 编码命名规范 34.1.1 命名规范与约定 34.1.2 编码命名与规范 34.2 配置文件方面 54.2.1 Ibatis配置文件命名规范 54.2.2 Ibatis sql/类映射命名规范 54.3 Struts配置方面 64.3.1 Struts.xml 配置文件命名 64.3.2 Struts Action类命名 64.4 Spring命名 74.4.1 Spring xml配置文件命名 74.4.2 配置文件规定 75 JavaScript编码规范 85.1 JavaScript公用js文件引入 85.2 JavaScript实
3、例分析 85.2.1 一段可读性和维护极差的代码 85.2.2 未使用公共函数,内置方法 95.2.3 变量名定义混乱 95.2.4 document.all 避免使用 95.2.5 乱注释,全是些无用注释 95.2.6 总体混乱 105.3 Javascript常见问题 105.3.1 Javascript代码块应该放到标签内 105.3.2 错误的Javascript代码块的放置 115.4 Javascript技巧 115.4.1 如果值无效返回默认值 115.4.2 如何取得变量的值 115.4.3 面向对象的Javascript有效避免命名冲突 125.5 Javascript编码规
4、范 125.5.1 JavaScript 文件 125.5.2 缩进 135.5.3 每行长度 135.5.4 注释 135.5.5 变量声明 145.5.6 函数声明 145.5.7 命名 155.5.8 语句 165.5.9 另外的建议 195.5.10 空白 205.5.11 和 205.5.12 (,逗号)操作符 205.5.13 作用域 205.5.14 赋值表达式 205.5.15 = 和!= 操作符 215.5.16 令人迷惑的加号和减号 215.5.17 需要避免的语句 211 前言编写本标准的目的是为了统一公司Java语言的风格,提高软件代码的可读性、可靠性和可重用性,从而提
5、高生产效率,降低成本,保证软件产品的质量。本规范适用于公司所有用Java语言编制的软件源程序。自本标准实施之日起,以后新编写的代码均应执行本标准。若有用户要求,以用户要求为准。2 基本原则基本原则为编程时应该坚持的指导思想。【原则1】保持代码的简明清晰,避免过分的编程技巧。【原则2】所有的代码尽量遵循ANSI C标准。【原则3】编程时首先达到正确性,其次考虑效率。【原则4】避免或少用全局变量。【原则5】尽可能重用、修正老的代码。3 文件目录3.1 工程目录结构命名规范与约定编码模块目录名称目录说明描述Java 编码目录Src存放java类源码Ailkcomm系统共用模块、底层目录ailkcom
6、m/com/ailk/util常用工具类目录如日期操作、字符串操作等。src/com/ailk/项目名称项目目录如:/src/com/ailk/fs。src/com/ailk/comm项目共用模块目录如:机构树使用等等。configs项目配置文件目录src/com/ailk/fs/account模块目录Account 模块名称src/com/ailk/fs/audit/actionAction目录注意:每个业务模块下都有该目录src/com/ailk/fs/audit/domain接口类目录注意:每个业务模块下都有该目录src/com/ailk/fs/audit/domainimpl实现类目录
7、注意:每个业务模块下都有该目录src/com/ailk/fs/audit/configs业务模块配置目录注意:每个业务模块下都有该目录Jsp编码目录WebRoot/pages存放前台展现的jsp 文件WebRoot/pages/account存放jsp文件模块目录该目录必须同后台处理的src目录下的模块目录一一对应WebRoot/css存放jsp样式文件WebRoot/js存放js文件WebRoot/images存放图片资源文件3.2 项目结构图4 JAVA编码规范4.1 编码命名规范4.1.1 命名规范与约定文件类型规范描述例子Package命名1. 项目包名统一前缀:ailk2. 名称统一
8、都使用小写ailk 公司简称/src/com/ailkClass之接口类命名1. 采用模块名称+Dao结束2. 使用驼峰命名法AuditFormatDao.javaClass之实现类命名1. 采用模块名称+Impl结束2. 使用驼峰命名法AuditFormatImpl.javaJSP文件命名1. 文件命名使用英文命名,可以由多个英文单词组合而成。2. 第一个单词小写,后面的单词头字母大写。例如:员工权限管理:staffRoleMgr.jsp1. 对于同一页面区分增加、修改页面的,文件名的末尾可以增加动作名称。例:权限管理页面下增加 员工权限: staffRoleAdd.jsp4.1.2 编码命
9、名与规范类型规范描述例子包和引入语句在Java 源文件中,第一个非注释行是包语句。在它之后可以跟引入语句。注意:引入语句要使用精确引入。包名全部为小写例如:package java.awt;import java.awt.peer.CanvasPeer;例如:import java.awt.peer.CanvasPeer;而不是import java.awt.peer.*;方法命名1. 动词 + 名词 + 条件 的方式来命名,首字母小写,其他单词首字母大写。2. 查询方法: 动词采用 get(无条件查询), qry(有条件查询)3. 修改: 动词采用 mod4. 删除: 动词采用 del5.
10、新增: 动词采用 add6. 其他:以实际动词为准7. 类内部变量的访问使用getXxx,setXxx方法实现。Public String addStaffRole()public String etStaffPrivilege()public String modRole() public String delRole()public String qryRole()方法编码1. 一个方法里面的代码行数不能超过50行2. 每一个方法与变量都必需做相应注释3. 不建议使用全局静态变量static,除非是定义常量4. 排版规范建议使用MyEclipse 自带工具处理,使用快捷键是:在编辑的代码窗
11、口 按 Ctrl+Shift+F 键处理。这样子速度快,又能统一格式。变量、参数命名1. 使用首个字母小写,代表所声明的数据类型第一个字母,后面单词首个字母大写,并尽量使用有意义的单词,并写清楚注释。2. 生命周期短的临时变量(如循环语句中用到的变量)中通常用i, j, k, m和n表示整数,并在使用时声明。3. static Final 变量的名字应该都大写,单词之间用“_”隔开,并且指出完整含义。4. 数组命名,数组应该总是用下面的方式来命名: byte buffer。String sUserName;For(int i=0,i100,i+)String c;Static String A
12、PP_ID注释1. 方法头注释 /* * Function:将数据库中获取的字段大写=小写 * param list * return * author wangyz 2010-7-30 * */配置方法:window-preferences-java-code style-code templates-comments-methods点击左边的edit,然后复制进去就可以了。按alt+shift+Z增加注释2. 方法内代码单行注释if (search != null) /获取父节点BssOrgList = bssOrgFacade.getBssParentOrg(search); else
13、/获取子节点BssOrgList = bssOrgFacade.getBssOrg(search); return SUCCESS;3. 成员变量注释public 的成员变量必须要有注释,直接在变量名后面增加。如: Static String APP_ID / 程序标识proceted、private和 package 定义的成员变量如果名字含义明确的话,可以没有注释时间格式处理时间的处理格式,例子如:把String类型转换为时间类型如:String date = “2010年9月1日”;Date sdate = DateUtil.getDate(DateUtil.YYYY$MM$DD$,da
14、te);Date 类型转String类型String date = DateUtil.getFormate(DateUtil. YYYY$MM$DD$,new Date();其他按照先去定的格式标准4.2 配置文件方面4.2.1 Ibatis配置文件命名规范Ibatis配置文件统一放置在configs目录下对于工具生成的配置文件,根据工具生成的命名为准。对于自行编写的,一般采用: 模块名-sqlMap.xml的命名方式比如: system-sqlMap.xml4.2.2 Ibatis sql/类映射命名规范Namespace以模块名称定义。如: SQL映射建议以操作动词+操作表名,并在SQL块
15、之前加上注释例如:select b.bss_org_level_id from role insert into role (role_id,role_name,role_desc,bss_org_level_id) values (seq_role_id.nextval,#role_name#,#role_desc#,100) delete role where role_id=#role_id# update role set role_name=#role_name#,role_desc=#role_desc# where role_id=#role_id# select role_id
16、,role_name,role_descfrom role where role_id=#role_id#4.3 Struts配置方面4.3.1 Struts.xml 配置文件命名Struts配置文件统一放置在configs目录下:命名规则统一遵照struts +模块名称,如:struts-system.xml4.3.2 Struts Action类命名Struts Action类统一采用采用“Action名称+方法名称”来命名比如前台操作帐户信息的action: 采用AccountAction.java例如: 4.4 Spring命名4.4.1 Spring xml配置文件命名采用:appl
17、icationContext -模块名.xml的命名方式例如:applicationContext-system.xml4.4.2 配置文件规定Bean id 命名规则以模块+接口名称,例如: .5 JavaScript编码规范5.1 JavaScript公用js文件引入对于系统各界面公用的功能块,如导航菜单等,统计引用all.js,便于后续增加的公用功能的扩展。5.2 JavaScript实例分析5.2.1 一段可读性和维护极差的代码5.2.2 未使用公共函数,内置方法可以修改为下面的方式,简单明了:5.2.3 变量名定义混乱 ss是什么意思,如果这个变量用到其他地方,谁知道他是什么意思。做
18、如下更改。5.2.4 document.all 避免使用不建议使用 IE下的古老方法,只适用于IE,可以替换为$E()替换为: 5.2.5 乱注释,全是些无用注释这些注释完全没用,反而增加了代码的晦涩程度,这种注释开发完成后应该删除掉。没有注释,请告诉我这段代码干了些什么?5.2.6 总体混乱逻辑比较复杂的脚本需要拆分为几个方法,这样才能是脚本清晰易懂,易于维护。5.3 Javascript常见问题 5.3.1 Javascript代码块应该放到标签内5.3.2 错误的Javascript代码块的放置5.4 Javascript技巧 5.4.1 如果值无效返回默认值原始代码:简化后的代码:5.
19、4.2 如何取得变量的值5.4.3 面向对象的Javascript有效避免命名冲突改造前的代码,init在目前系统中会被其他js库的init方法给覆盖掉,导致一些莫名其妙的错误。迫使我们将方法名命名复杂点,但是造成方法同名的问题概率也是比较高的,最好的办法就是建立命名空间的概念,解决这个问题!改造后的代码,不会存在命名冲突的问题5.5 Javascript编码规范5.5.1 JavaScript 文件JavaScript 程序应独立保存在后缀名为 .js 的文件中。JavaScript 代码不应该被包含在 HTML 文件中,除非这是段特定只属于此部分的代码。在 HTML 中的 JavaScri
20、pt 代码会明显增加文件大小,而且也不能对其进行缓存和压缩。filename.js 应尽量放到 body 的后面。这样可以减少因为载入脚本而造成其他页面内容载入也被延迟的问题。也没有必要使用 language 或者 type 属性。 MIME 类型是由服务器而非 scripttag 来决定的。按照 Web 标准而言,建议指定 type 属性,并将 放到页面的 标签中。5.5.2 缩进缩进的单位为四个空格。虽然使用空格会增加文件的大小,但在局域网中几乎可以忽略,且在最小化过程中也可被消除掉。5.5.3 每行长度避免每行超过 80 个字符。当一条语句一行写不下时,请考虑折行。在运算符号,最好是逗号
21、后换行。在运算符后换行可以减少因为复制粘贴产生的错误被分号掩盖的几率。5.5.4 注释请注释每一个方法,给以后需要理解你的代码的人们(或许就是你自己)留下信息是非常有用的。注释应该和它们所注释的代码一样是书写良好且清晰明了。偶尔的小幽默就更不错了。记得要避免冗长或者情绪化。及时地更新注释也很重要。错误的注释会让程序更加难以阅读和理解。让注释有意义 。重点在解释那些不容易立即明白的逻辑上。不要把读者的时间浪费在sCustId = 0; / 客户标识使用单行注释。块注释用于注释正式文档和无用代码。5.5.5 变量声明面向对象的Javascript,在需要使用变量的时候才定义变量,请参考 Java编
22、码规范中的变量声明。在函数的首部定义所有的变量。尽量减少全局变量的使用。不要让局部变量覆盖全局变量。5.5.6 函数声明所有的函数在使用前进行声明。 内函数的声明跟在 var 语句的后面。这样可以帮助判断哪些变量是函数范围内的。函数名与 “ ( ” ( 左括号)之间不应该有空格。 “ ) ” (右括号)与开始程序体的 “ ” (左大括号)之间应入一个空格。函数程序体应缩进四个空格。 “ ” (右大括号)与声明函数的那一行代码头部对齐。下面这种书写方式可以在 JavaScript 中正常使用,因为在 JavaScript 中,函数和对象的声明可以放任何表达式允许的地方。且它让内联函数和混合结构具
23、有最好的可读性。如果函数是匿名函数,则在 function 和 “ ( ” (左括号)之间应有一个空格。如果省略了空格,否则会让人感觉函数名叫作 function 。尽量不使用全局函数。5.5.7 命名变量名应由 26 个大小写字母( A.Z , a.z ), 10 个数字( 0.9 ),和 “ _ ” (下划线)组成。避免使用际化字符(如中文),因为它们不是在任何地方都可以被方便的阅读和理解。不要在命名中使用 “ $ ” (美符号)或者 “ ” (反斜杠)。不要把 “ _ ” (下划线)作为变量名的第一个字符。它有时用来表示私有变量,但实际上 JavaScript 并提供私有变量的功能。如果
24、私有变量很重要,那么使 用 私有成员 的形式。应避免使用这种容易让人误解命名习惯。大多数的变量名和方法命应以小写字母开头,参考Java命名规范。必须与new 共同使用的构造函数名应以大写字母开头。当 new 被省略时 JavaScript 不会有任何编错误或运行错误抛出。忘记加 new 时会让不好的事情发生(比如被当成一般的函数),所以大写构造函名是我们来尽量避免这种情况发生的唯一办法。 全局变量应该全部大写。( JavaScript 没有宏或者常量,所以不会因此造成误会)5.5.8 语句5.5.8.1 简单语句每一行最多只包含一条语句。把 “ ; ” (分号)放到每条简单语句的结尾处。注意一
25、个函数赋值或对象赋值语句也是赋值语句,应该以分号结尾。JavaScript 可以把任何表达式当作一条语句。这很容易隐藏一些错误,特别是误加分号的错误。只有在赋值和调用时,表达式才应被当作一条单独的语句。5.5.8.2 复合语句复合语句是被包含在 “ ” (大括号)的语句序列。被括起的语句必须多缩进四个空格。“ ” (左大括号)应在复合语句其实行的结尾处。“ ” (右大括号)应与 “ ” (左大括号)的那一行的开头对齐。大括号应该在所有复合语句中使用,即使只有一条语句,当它们是控制结构的一部分时,比如一个 if 或者 for 语句。这样做可以避免以后添加语句时造成的错误。5.5.8.3 标示语句
26、标示是可选的,只有以下语句必须被标示: while 、 do 、 for 、 switch 。5.5.8.4 return 语句释一条有返回值的 return 语句不要使用 “ ( ) ” (括号)来括住返回值。如果返回表达式,则表达式应与 re turn 关键字在同一行,以避免误加分号错误。5.5.8.5 if 语句if 语句应如以下格式 : 5.5.8.6 for 语句 for 语句应如以下格式 : 第一种形式的循环用于已经知道相关参数的数组循环。第二种形式应用于对象中。 Object 原型中的成员将会被包含在迭代器中。通过预先定义 hasOwnProperty 方法来区分真正的 object 成员是个不错方法:5
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1