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在拳击比赛中指最轻量级,即“蝇量级”或“雨量级”,这里选择使用“享元模式”的意译,是因为这样更能反映模式的用意.享元模式是对象的结构模式.享元模式以共享的方式高效地支持 ...
随机推荐
- 关于随机浏览头伪装fake-UserAgent
使用: from fake_useragent import UserAgent ua = UserAgent() #ie浏览器的user agent print(ua.ie) Mozilla/5.0 ...
- Vue-cli创建项目从单页面到多页面4 - 本地开发服务器设置代理
前后端分离开发时,有时候会遇到跨域的情况:只在开发的时候存在跨域,项目上线后,由于配置的域名相同,跨域就会不存在. 这个时候,有两种方案可以比较快的解决: 1.利用h5的特性,使用cors,在ngni ...
- 项目中对模板和js,css文件进行压缩的处理类
我们知道,在html的页面中,所有空格和换行符其实都会占据一定的空间,即使使用了gzip压缩,在传输过程中依然会浪费用户的流量和我们自己服务器的带宽,此脚本就是为了解决这个问题而诞生的. 请自行下载G ...
- JAVA中最方便的Unicode转换方法
在命令行界面用native2ascii工具 1.将汉字转为Unicode: C:\Program Files\Java\jdk1.5.0_04\bin>native2ascii 测试 ...
- ps 切片 蓝色 灰色 小标志 什么意思
切片颜色 区分自动切片与用户切片和基于图层的切片.默认情况下,用户切片和基于图层的切片带蓝色标记,而自动切片带灰色标记.-----用户切片就是你需要的切片,其他区域会形成自动切片,可以视为自己不要的, ...
- django 之admin后台管理
数据库 from django.db import models from django.contrib.auth.models import User from django.contrib.aut ...
- Base64Util工具类
package com.qianmi.weidian.common.util; import java.io.*; /** * This class provides encode/decode fo ...
- 2018.6.21 HOLTEK HT49R70A-1 Source Code analysis
Cange note: “Reading TMR1H will latch the contents of TMR1H and TMR1L counter to the destination”? F ...
- L103
Give everyday the chance to become the most beautiful day of your life.把每天都过成你生命中最美好的一天.competence 能 ...
- C++11特性 gcc源码包
1.下载gcc最新的源码包 2.解压缩 tar -xf gcc-4.9.1.tar.gz 3. cd gcc-4.9.1 4.运行download_prerequisites脚本, ./contri ...