【转载于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. 给元素内的文字内容的四周添加空白区域禁止使用 &nbsp; 和 <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 工作中注意事项的更多相关文章

  1. git工作中最常用的用法教程,不走命令行

    ·1.1 git的概述 Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理.  Git 是 Linus Torvalds 为了帮助管理 Lin ...

  2. 随机记录工作中常见的sql用法错误(一)

    没事开始写博客,留下以前工作中常用的笔记,内容不全或者需要补充的可以留言,我只写我常用的. 网上很多类似动软生成器的小工具,这类工具虽然在表关系复杂的时候没什么软用,但是在一些简单的表结构关系还是很方 ...

  3. 工作中常用的js、jquery自定义扩展函数代码片段

    仅记录一些我工作中常用的自定义js函数. 1.获取URL请求参数 //根据URL获取Id function GetQueryString(name) { var reg = new RegExp(&q ...

  4. 工作中那些提高你效率的神器(第二篇)_Listary

    引言 无论是工作还是科研,我们都希望工作既快又好,然而大多数时候却迷失在繁杂的重复劳动中,久久无法摆脱繁杂的事情. 你是不是曾有这样一种想法:如果我有哆啦A梦的口袋,只要拿出神奇道具就可解当下棘手的问 ...

  5. 工作中那些提高你效率的神器(第一篇)_Everything

    引言 无论是工作还是科研,我们都希望工作既快又好,然而大多数时候却迷失在繁杂的重复劳动中,久久无法摆脱繁杂的事情. 你是不是曾有这样一种想法:如果我有哆啦A梦的口袋,只要拿出神奇道具就可解当下棘手的问 ...

  6. Atitit 软件开发中 瓦哈比派的核心含义以及修行方法以及对我们生活与工作中的指导意义

    Atitit 软件开发中 瓦哈比派的核心含义以及修行方法以及对我们生活与工作中的指导意义 首先我们指明,任何一种行动以及教派修行方法都有他的多元化,只看到某一方面,就不能很好的评估利弊,适不适合自己使 ...

  7. C# 工作中遇到的几个问题

    C#  工作中遇到的几个问题 1.将VS2010中的代码编辑器的默认字体“新宋体”改为“微软雅黑”后,代码的注释,很难对齐,特别是用SandCastle Help File Builder生成帮助文档 ...

  8. [工作中的设计模式]解释器模式模式Interpreter

    一.模式解析 解释器模式是类的行为模式.给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器.客户端可以使用这个解释器来解释这个语言中的句子. 以上是解释器模式的类图,事实上我 ...

  9. [工作中的设计模式]享元模式模式FlyWeight

    一.模式解析 Flyweight在拳击比赛中指最轻量级,即“蝇量级”或“雨量级”,这里选择使用“享元模式”的意译,是因为这样更能反映模式的用意.享元模式是对象的结构模式.享元模式以共享的方式高效地支持 ...

随机推荐

  1. ABAP下载xml文件

    [转http://www.cnblogs.com/byfhd/archive/2007/08/17/859829.html] ************************************* ...

  2. 关于align-items和align-content的区别和使用场景

    最近在研究flex布局,容器中有两个属性,是用来定义crossAxis测轴排列方式的.一开始接触align-items还可以理解感觉不难,后来看到align-content就感觉有点混淆了,特开一篇博 ...

  3. deviceToken的获取(一)

    1.获得deviceToken的过程     1>客户端向苹果服务APNS,发送设备的UDID和英语的Bundle Identifier.2>经苹果服务器加密生成一个deviceToken ...

  4. jQuery中通过JSONP来跨域获取数据的三种方式

    第一种方法是在ajax函数中设置dataType为'jsonp' $.ajax({ dataType: 'jsonp', url: 'http://www.a.com/user?id=123', su ...

  5. ios 表情编码

    感受 :可以做自定义键盘时候用  很方便 还可以在textView里面看到 用户体验很好~ 但是要和服务器管理员协商好,做好解析转码工作,不然网页上是不显示的. ios表情编码 在ios中可以使用可爱 ...

  6. Swift协议+代理

    Swift语言开发中使用协议+代理的用法和oc中是一样的,只不过变得是语法.现在就进入swift的协议+代理. 先上个图,看看我们要实现的效果:  首先是第一个页面,然后点击到第二个页面,最后点击返回 ...

  7. GDI+在绘制验证码中的使用

    GDI+最简单的理解就是用来绘图的.其中包括点.直线.矩形.字符串等等. 先简单来个例子,说明如何在winform窗体中绘制一条直线,并且这条直线不随着窗体的移动而消失. using System; ...

  8. android6.0 外部存储设备插拔广播以及获取路径(U盘)【转】

    本文转载自:https://blog.csdn.net/zhouchengxi/article/details/53982222 这里我将U盘作为例子来说明解析. android4.1版本时U盘插拔时 ...

  9. Unigui unidbgrid+unidac uniquery联合使用时产生的奇葩问题

    如下一个uniquery查询: SELECT a.id,a.userid,a.name,if(a.completed='T',CONCAT('<a  class="icons" ...

  10. CodeForces 292D Connected Components (并查集+YY)

    很有意思的一道并查集  题意:给你n个点(<=500个),m条边(<=10000),q(<=20000)个询问.对每个询问的两个值xi yi,表示在从m条边内删除[xi,yi]的边后 ...