J2EE 工作中注意事项
【转载于http://www.cnblogs.com/hemingwang0902/archive/2012/01/06/2314215.html】
根据当前项目中代码存在的一些问题,编写了一个编码注意事项。这些注意事项都是针对自己当前实施的项目的代码提出来的,并不作为项目的编码规范,仅为项目组成员提供参考。
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选择器
J2EE 工作中注意事项的更多相关文章
- git工作中最常用的用法教程,不走命令行
·1.1 git的概述 Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. Git 是 Linus Torvalds 为了帮助管理 Lin ...
- 随机记录工作中常见的sql用法错误(一)
没事开始写博客,留下以前工作中常用的笔记,内容不全或者需要补充的可以留言,我只写我常用的. 网上很多类似动软生成器的小工具,这类工具虽然在表关系复杂的时候没什么软用,但是在一些简单的表结构关系还是很方 ...
- 工作中常用的js、jquery自定义扩展函数代码片段
仅记录一些我工作中常用的自定义js函数. 1.获取URL请求参数 //根据URL获取Id function GetQueryString(name) { var reg = new RegExp(&q ...
- 工作中那些提高你效率的神器(第二篇)_Listary
引言 无论是工作还是科研,我们都希望工作既快又好,然而大多数时候却迷失在繁杂的重复劳动中,久久无法摆脱繁杂的事情. 你是不是曾有这样一种想法:如果我有哆啦A梦的口袋,只要拿出神奇道具就可解当下棘手的问 ...
- 工作中那些提高你效率的神器(第一篇)_Everything
引言 无论是工作还是科研,我们都希望工作既快又好,然而大多数时候却迷失在繁杂的重复劳动中,久久无法摆脱繁杂的事情. 你是不是曾有这样一种想法:如果我有哆啦A梦的口袋,只要拿出神奇道具就可解当下棘手的问 ...
- Atitit 软件开发中 瓦哈比派的核心含义以及修行方法以及对我们生活与工作中的指导意义
Atitit 软件开发中 瓦哈比派的核心含义以及修行方法以及对我们生活与工作中的指导意义 首先我们指明,任何一种行动以及教派修行方法都有他的多元化,只看到某一方面,就不能很好的评估利弊,适不适合自己使 ...
- C# 工作中遇到的几个问题
C# 工作中遇到的几个问题 1.将VS2010中的代码编辑器的默认字体“新宋体”改为“微软雅黑”后,代码的注释,很难对齐,特别是用SandCastle Help File Builder生成帮助文档 ...
- [工作中的设计模式]解释器模式模式Interpreter
一.模式解析 解释器模式是类的行为模式.给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器.客户端可以使用这个解释器来解释这个语言中的句子. 以上是解释器模式的类图,事实上我 ...
- [工作中的设计模式]享元模式模式FlyWeight
一.模式解析 Flyweight在拳击比赛中指最轻量级,即“蝇量级”或“雨量级”,这里选择使用“享元模式”的意译,是因为这样更能反映模式的用意.享元模式是对象的结构模式.享元模式以共享的方式高效地支持 ...
随机推荐
- LeetCode:救生艇【881】
LeetCode:救生艇[881] 题目描述 第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit. 每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit. ...
- LeetCode:贪婪算法
LeetCode:贪婪算法 贪婪算法基础 我 717. 1-bit and 2-bit Characters class Solution { public boolean isOneBitChara ...
- QCon2016 上海会议汇总(2) - 团队管理
QCon 2016上海日程:http://2016.qconshanghai.com/schedule <当你的团队还支撑不起梦想时> - 链尚网技术合伙人 杨荣伟 Figo讲述了如何训练 ...
- 每天一个Linux命令(31)diff命令
diff命令在最简单的情况下,比较给定的两个文件的不同.如果使用“-”代替“文件”参数,则要比较的内容将来自标准输入.diff命令是以逐行的方式,比较文本文件的异同处.如果该命令指定进行目录的比较,则 ...
- 视图的创建与使用 Sql Server View
创建教材的三个数据表Student.Course及SC. create database S_T Use S_T CREATE TABLE Student (Sno CHAR(9), Sname CH ...
- 机器学习相关知识整理系列之一:决策树算法原理及剪枝(ID3,C4.5,CART)
决策树是一种基本的分类与回归方法.分类决策树是一种描述对实例进行分类的树形结构,决策树由结点和有向边组成.结点由两种类型,内部结点表示一个特征或属性,叶结点表示一个类. 1. 基础知识 熵 在信息学和 ...
- mysql自定义函数语法
创建函数 DELIMITER $$DROP FUNCTION IF EXISTS `test` $$CREATE FUNCTION `test`(a int ,b int)RETURNS int BE ...
- java深入探究01
经过前面基础部门的学习,希望大家都把基础打闹再继续深入探究java应用层面的知识,以后的日子我会继续更新java进阶知识,深入探究实际工作中的java应用,说的不好的地方还请见谅,如果能提出你宝贵的建 ...
- 算法(Algorithms)第4版 练习 1.5.8
假设原id数组: 0 1 1 4 4 8 6 1 8 0 输入p = 5, q = 7 则输出结果会出错,最终为: 0 1 1 4 4 1 6 1 8 0 因为当id[p](id[5] = 8)被赋值 ...
- 每个程序员都应该了解的 CPU 高速缓存
每个程序员都应该了解的 CPU 高速缓存 英文原文:Memory part 2: CPU caches 来源:oschina [编者按:这是Ulrich Drepper写“程序员都该知道存储器”的第二 ...