J2EE项目编码注意事项
根据当前项目中代码存在的一些问题,编写了一个编码注意事项。这些注意事项都是针对自己当前实施的项目的代码提出来的,并不作为项目的编码规范,仅为项目组成员提供参考。
1. 所有源文件(包括 .java、.jsp、.properties、.html、.js、.css、.xml、.txt等)统一使用 UTF-8 编码。
2. 每天上班时,从 SVN 获取最新代码;下班前,必须将测试通过的功能模块代码提交至 SVN 版本库。提交至SVN的代码必须是完整的!
1. JAVA
1. 类和方法的命名必须具有实际意义,命名风格必须保持一致,禁止使用中英混搭(尽量使用英文,而非汉语拼音)。
2. 禁止硬编码,项目中经常用到的且在整个项目开发、运行过程中始终不会修改的值,可以作为java常量统一定义在一个常量接口中;如果在项目开发、运行过程中可能会需要进行修改的值(如数据库的配置信息),则必须定义在配置文件中。
3. 对于 I/O 流对象、JDBC操作数据库的对象、Socket 对象、LDAP连接对象、JMS连接对象等,在使用完成时,必须在 finally 块中将其关闭。如果是在循环体中声明的,则必须在循环体中关闭。(谁声明,谁管理)。
4. 编译级别在 jdk 1.5 以上的系统,在开发时集合类建议使用泛型,以免程序中到处都是警告。
5. 尽量避免在http session 中存放大对象,尤其是很大的集合对象。
6. 通过JDBC操作数据库的时候,能够通过一条 SQL 语句完成的功能,尽量避免使用多条 SQL 分开执行,如果同时执行多条 DML 语句,则必须开启事务,保证数据的完整性。对于需要传入参数的操作,为了防止SQL注入,必须使用 java.sql.PreparedStatement,而不能使用 java.sql.Statement。
7. 很多类都需要使用到的方法,尽量提取到 *Util 类中,而不要在每个用到该方法的类中都定义一次;如果只是少数几个同种类型的类共用的方法,则可以考虑将其提取到父类中。
8. 常用的字符串、数字、日期、数组操作,应当尽量使用 apache-commons-lang.jar 中的方法;常用的I/O操作,应当尽量使用 apache-commons-io.jar 中的方法,而不要自己再另外去定义了。
9. Servlet或Action返回 json 格式的数据时,切莫手动拼接 json 格式的字符串,而应该直接使用 json-lib.jar 中的相关类进行操作。
10. 程序中禁止出现 System.out.println...的语句,应该使用 logger.debug 或 logger.info 代替;e.printStackTrace();则应该使用 logger.warn(e) 或logger.error(e) 代替。
11. 对于代码中的 // TODO 标记语句,在完成了该任务的代码编写后,应当及时删除。
12. 如果一个类有成对的操作时,方法的命名一定要注意相对应,常见的方法命名对应关系有:
add-->remove、insert-->delete、put-->get、create-->drop、init-->destroy、open-->close、start-->stop、begin-->end、first-->last、next-->previous、up-->down、send-->receive、lock-->unlock、show-->hide
2. JSP
1. 多个页面共用的部分(如:页头和页脚)应该提取为单独的 jsp 文件,然后在各个使用到该部分代码的页面用 <%@taglib inclue ...%> 将对应的代码包含进来。
2. 引入其他 jsp 文件的时候,尽量使用指令引入,如果需要动态的传入参数,才考虑使用 jsp 动作进行引入。
3. 能用 EL 表达和 jsp 标签实现的,尽量避免使用 <% %> 这样的Java脚本代码。
4. jsp 文件中引入 java 类的时候,为了提高代码的可读性,尽量每引入一个类单独占用一行。
3. HTML
1. 每个HTML页面的第一行必须为 DOCTYPE 声明,告知浏览器解析CSS的模式,以免页面在各个浏览器中显示的效果不一样。
2. 尽量使用 DIV 进行布局,而不要使用 Table 嵌套 Table 的形式进行页面布局。
3. 给Table、TD等元素指定宽度和高度时,应该使用样式进行指定,而不是使用元素的 width 和 height 属性进行指定。
4. 页面内元素的嵌套必须为一一对应。
5. 给元素内的文字内容的四周添加空白区域禁止使用 和 <br>,而应该改为使用元素的 padding 样式进行控制。
4. JavaScript
1. 共用的 js 片段必须提取为单独的方法。
2. 多个页面共用的 javascript 方法必须提取为单独的 js 文件,禁止在每个页面中写一个相同方法。
3. 方法和变量的命名必须有实际意义,禁止命名为类似于 aaa、bbb 的名称。
4. 页面加载完成后马上执行的方法,尽量避免使用 <body onload="xxx()"> 和 window.onload=function(){} 的形式,应该改为使用 jQuery(document).ready(function(){}); 的形式。
5. 尽量避免在同一个页面或同一个 js 文件中同时使用原生的 js 和 jQuery 对页面元素进行操作。
5. CSS
1. 多个页面共用的样式,必须提取为单独的 css 文件。
2. css 文件中的样式类名称必须有实际意义,禁止使用类似于STYLE1、STYLE2 的名称进行命名。
3. css文件中止使用 tagName tagName (如 div div) 这样的选择器,应该将其改为 #id tagName或 .class tagName 这样的形式。
4. css 文件中选择器的排序:元素选择器 –> 类选择器 –> id选择器