posts - 297,  comments - 1618,  trackbacks - 0
昨天转悠到一blog,看到一篇好文。
原文出处:http://www.blogjava.net/bibi/archive/2007/03/21/24819.html

1.统一工作目录

2.Interface oriented programming

在定义参数类型,或者方法返回类型,使用Map或者List,不用Hashmap or ArrayList。只有在构造时才允许出现Hashmap或者ArrayList
public List getAllProduct(); //正确。定义返回类型
public ArrayList getAllProduct(); //错误!!定义返回类型
public List queryByCritical(Map criticals); //定义参数类型
public List queryByCritical(HashMap criticals); //错误!!定义参数类型
List result = null;//定义类型的时候未List
result = new ArrayList();//只有构造时出现的实现类

Map result = null;//定义类型的时候未Map
result = new HashMap();//只有构造时出现的实现类

3.变量命名不允许出现下划线,除了常量命名时用下划线区分单词

String user_name= null;//错误!!! 即使数据库中这种风格
String userName = null;//正确写法
int CET_SIX=6;//常量命名时用下划线区分单词,字符全部大写

4.代码中不能出现magic number

//错误!!不能出现如此写法,需要定义为常量if(user.getNumber() == 1001 ) {
//do something
}
//正确写法static final int ADMINISTRATOR_ROLE_NUMBER = 1001;
static final int MIN_WIDTH = 4;
static final int MAX_WIDTH = 999;
static final int GET_THE_CPU = 1

if(user.getNumber() == ADMINISTRATOR_ROLE_NUMBER ) {
//do something
}

5.不在循环中定义变量

//sample code snippetfor(int i=0;i<10;i++){
    ValueObject vo = new ValueObject();
}
//recommend this style
ValueObject vo = null;
for(int i=0;i<10;i++){
   vo = new ValueObject();
}

6.NOT TAB,采用4 spaces。大家请设置ide的TAB为4 space

7.使用StringBuffer来替代String + String

不正确写法:
//sample code snippetString sql =”INSERT INTO test (”;

Sql+=”column1,column2,values(”
Sql+=”1,2)”

正确写法:
StringBuffer sql = new StringBuffer();
sql.append(”INSERT INTO test (”);
sql.appdend(”column1,column2,values(”);
sql.append(”1,2)”);

8.单语句在IF,While中的写法. 使用Brackets 来做程序块区分

不正确写法:
if ( condition) //single statement, code here
while
( condition ) //single statement, code here

正确写法:
//IFif ( condition) {
  //code here
}

//WHILEwhile ( condition ) {
  // code here
}

9.Brackets 应当直接在语句后

if ( foo ) {
    // code here
}

try {
    // code here
} catch (Exception bar) {
    // code here
} finally {
    // code here
}

while ( true ) {
    // code here
}

10.用log4j来做日志记录,不在代码中使用System.out

错误写法:
System.out.println(" debug 信息");

正确写法:
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

private static Log logger = LogFactory.getLog(SQLTable.class);

logger.debug("debug 信息"); //注意这里没有涉及字符串操作
//涉及字符串操作或者方法调用的,需要用
logger.isDebugEnable()
来做判断
if(logger.isDebugEnable()){ logger.debug(String1 + string 2 + string3 + object.callMethod()); }

如果程序中需要输出的信息为非调试信息,用logger.info来做输出
logger.info(""Can't find column to build index. ColName=" + columnName");

11.异常处理中日志问题

错误写法1:
try{
   //handle something
} catch (Exception ex) {
   //do nothing. 请确定该exception是否可以被忽略!!!!
}

错误写法2:
try{
   //handle something
} catch (Exception ex) {
  ex.printStackTrace ();//不在程序中出现如此写法!!
}

错误写法3:
try{
   //handle something
} catch (Exception ex) {
  log.error(ex);//这样将仅仅是输出ex.getMessage(),不能输出stacktrace
}

正确写法:
try{
   //handle something
} catch (Exception ex) {
   log.error("错误描述",ex);//使用log4j做异常记录
}

12.Release Connection ,ResultSet and Statement

//sample code snippet
Connection con = null;
Statement st = null;
ResultSet rs = null;

try {
  con = JNDIUtils.getConnection();
  st = …
  rs = …
} finally {
        JDBCUtil.safeClose(rs);//close resultset ,it is optional
        JDBCUtil.safeClose(st);//close statement after close resultset, it is optional
        JDBCUtil.safeClose(con);//make sure release it right now
}

13.Replace $variableName.equals(’string’) with ‘string’.equals($variableName)

减少由于匹配的字符为null出现的nullpointexception
//sample code snippetString username = …
…
if(“mark”.equals(userName)){
	…
}

14.always import classes

//recommend coding conventionimport java.util.HashMap;
import java.util.Map;
import java.util.List;

//import java.util.*; 
NOT!!
//We can use eclipse,right click, choose Source -> Organize Imports
//hotkey:Ctrl+Shift+O

15.注释

程序header,加入如下片断。这样将可以记录当前文件的版本以及最后的修改人员

java,jsp中加入
/**
 * $Id: $
 *          
 */

xml中加入
<?xml version="1.0" encoding="UTF-8"?><!--
$Id:$ 
-->

16.在有issue出,加入//TODO 来记录,以便在task中可以方便记录未完成部分

//sample code snippet//TODO issue: the data format, should be fixed

17.domain model或者VO使用注意事项

检查数据库中允许为null的栏位

对从数据库中取出的domain model或者VO,如果数据库中允许为null,使用有必要检查是否为null
CODE SNIPPET
//user table中的该字段允许为null,使用时就需要去check,否则可能出现nullpoint exception
if(user.getDescription()!=null) { //do something }

需要完成VO中的equals,hashCode,toString 三个方法

18.JSP中约定

为每个input设定好size同maxlength

<input type="text" maxlength = "10" size="20"/>
posted on 2007-03-22 11:03 阿蜜果 阅读(459) 评论(1)  编辑  收藏 所属分类: Java


FeedBack:
# re: Rule Of Development[转]
2008-01-08 12:50 | hbyufan@hotmail.com
受教了  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 
<2007年3月>
25262728123
45678910
11121314151617
18192021222324
25262728293031
1234567

      生活将我们磨圆,是为了让我们滚得更远——“圆”来如此。
      我的作品:
      玩转Axure RP  (2015年12月出版)
      

      Power Designer系统分析与建模实战  (2015年7月出版)
      
     Struts2+Hibernate3+Spring2   (2010年5月出版)
     

留言簿(262)

随笔分类

随笔档案

文章分类

相册

关注blog

积分与排名

  • 积分 - 2286206
  • 排名 - 3

最新评论

阅读排行榜

评论排行榜