java项目开发规范

 

1命名规范

1.1 package (*)

包名全部由小写的ASCII字母组成,用“.”分隔。

在此项目中,所有的包均以“com”开头。

功能模块的包命名格式

biz 业务层 biz.impl 业务层实现

dao 持久层 dao.impl 持久层实现

controller 控制层

entity 实体以及mapper配置

util 仅当前业务使用的工具类

 

1.2 class (*)

类名应当是名词,每个内部单词的头一个字母大写。应当使你的类名简单和具有说明性。用完整的英语单词或约定俗成的简写命名类名。

【示例】public class UserManager

1.3 interface(*)

接口名应当是名词,每个内部单词的头一个字母大写。应当使你的接口名简单和具有说明性。用完整的英语单词或约定俗成的简写命名接口名。

【示例】interface TicketManagement

1.4 Class 成员属性及变量的命名 (*)

变量名全部由字母组成,头一个字母小写,以后每个内部单词的头一个字母大写。

变量名应该短而有意义。变量名的选择应该易于记忆。

一个字符的变量名应避免,除非用于临时变量。通常临时变量名的命名规则为:i,j,k,m,n用于整数;c,d,e用于字符。

【示例】private String lastName;

1.5 常量的命名(*)

Java 里的常量,是用static final 修饰的,应该用全大写加下划线命名,并且尽量指出完整含义。

【示例】static final String SMTH_BBS="bbs.cn";

1.6 数组的命名(*)

数组应该总是用下面的形式来命名:

byte[] buffer;

1.7 方法的参数(*)

和变量的命名规范一致,且应使用有意义的参数命名,如果可能的话,使用和要赋值的字段一样的名字。

【示例】setCounter(int size){

this.size = size;

}

1.8 方法命名(*)

方法的命名应当使用动词,头一个字母小写,以后每个内部单词的头一个字母大写。

在方法名的选择上应意义明确便于记忆。

对于属性的存取方法,应使用getXXX()和setXXX()名称,以isXXX(),hasXXX()来命名返回值为boolean 类型的方法。

1.9 一般命名注意事项

用有意义的名字命名变量

首先,用完整的英语单词或约定俗成的简写命名变量。

【示例】firstName

zipCode

用复数命名Collection 类变量。Collection 包括数组等。命名时使用复数:

【示例】customers

classmates

2 Java 源文件样式

Java(*.java) 源文件应遵守如下的样式规则:  

2.1 Class 代码布局:

版权声明

Package和Import语句

Javadoc 注释或者其它文件头注释

类或接口声明

Fields 声明

空行

构造函数

空行

其它方法(不包括main)

空行

内部(Inner)类

空行

main()方法

2.2 版权声明

所有的源文件都应该以一个c风格的注释开始,以列出类名,版本信息,修改日期和版权声明。

【示例】/*

     * Class name :

*

* Version information :

*

* Date :

*

* Copyright 2003 Prosten Technology Co.,Ltd.

*

*/

其他不需要出现在 javadoc 的信息也可以包含在这里。

2.3 Package/Imports(*)

package 行要在 import 行之前,中间空一行。

将import 的classes 归类,按顺序罗列:

a. Java 标准类(java.*)

b. Java 扩充类(javax.*)

c. 第三方类

d. 你的应用程序的类

注意在第三方类里进行注释,说明它们的来源。如果 import 行中包含了同一个包中的多个类,则可以用 * 来处理。

【示例】package com.prosten.ticket.ticketmanagement;

import java.io.*;

import java.util.Observable;

import java.util.Date;

import javax.sql.*;

//Apache Xerces

import org.apache.xml.*;

import org.apache.xerces.dom.*;

//Application classes

import com.prosten.util.*;

这里 java.io.* 使用来代替InputStream 和 OutputStream 的引入。

2.4 Javadoc 注释

【示例】/**

* <p>Title: 类名</p>

* <p>Description:(说明用中文)/</p>

* @author:       

* @date:(最后一次修改的提交时间)

*/

 

第四章节附注释模版

2.5 Class Fields

类的成员变量:

【示例】protected int[] packets;

public 的成员变量必须以生成文档(JavaDoc) 的方式进行注释(/** … */)。

proceted、private 和 package 定义的成员变量如果名字含义明确的话,可以没有注释。

Field 定义可遵从以下顺序:

a. public 常量

b. public 变量

c. protected 常量

d. protected 变量

e. package 常量

f. package 变量

g. private 常量

h. private 变量

2.6 存取方法(getter,setter)

接下来是类变量的存取的方法。

2.7 构造方法(*)

重载的构造方法应该用递增的方式写(参数多的写在后面)。

【示例】public CounterSet(){

this(10);

}

public CounterSet(int size){

this.size = size;

}

2.9 类方法

下面开始写类方法:

【示例】/**

* Set the packet counters

* (such as when restoring from a database)

*/

protected final void setArray(int[] r1, int[] r2, int[] r3, int[] r4)

throws IllegalArgumentException {

if (r1.length != r2.length || r1.length != r3.length

|| r1.length != r4.length) {

throw new IllegalArgumentException("Arrays must be he same size");

                        }

System.arraycopy(r1, 0, r3, 0, r1.length);

System.arraycopy(r2, 0, r4, 0, r1.length);

}

 

单个业务方法的行数限制在200行以内

2.10 toString 方法

每一个类都最好定义 toString 方法:

【示例】public String toString() {

String retval = "CounterSet: ";

for (int i = 0; i < data.length(); i++) {

retval += data.bytes.toString();

retval += data.packets.toString();

}

return retval;

}

2.11 main 方法(*)

如果类中包含main(String[]) 方法, 那么它应该写在类的底部。

3 代码编写风格

3.1 语句

3.1.1 简单语句

每一行包含至多一条语句。

3.1.2 复合语句

复合语句是指附加形如"{……}"封套结构的语句。

封套内的语句要比复合语句多缩进一个层次。

开头的括号因该在起始复合语句同一行的末尾;结尾的括号应该新起一行并和起始的复合语句保持同样缩进。

应当对所有诸如if-else,while,for,try-catch结构的控制语句都使用大括号,即使是单个语句,只要它是控制结构的一部分。

【示例】if (condition) {

             statements;

} else {

             statements;

}        //if-else 语句

3.1.3返回语句

有值返回的返回语句不应该使用括号,除非某些情况下为了使得返回值更加明显。

【示例】return;

return myDisk.size();

return (size ? size : defaultSize);

3.2 位置控制

3.2.1 缩进

应当用四个空格作为缩排的单位。不要在源文件中保存Tab 字符(!!)。以免在使用不同的源代码管理工具时Tab 字符将因为用户设置的不同而显示为不同的宽度。

3.2.2 行的长度

避免行长超过80个字符,因为这样不好被大多数终端显示和工具处理。

3.2.3 折叠的行

当表达在一行放不下时,根据下面的一般原则打断它:

在一个逗号后打断。

在运算符前打断。

高层次的打断优于低层次的打断。

让新起的行与上一行同一层次表达的开头对齐。

如果上面的方法导致代码混乱或者代码减少了合适的页边空白,那么使用缩进8个空格代替。

 

【示例】下面的例子打断了方法调用:

someMethod(longExpression1, longExpression2, longExpression3,

longExpression4, longExpression5);

var = someMethod1(longExpression1,

someMethod2(longExpression2,longExpression3));

 

【示例】        下面两个例子打断了算术表达式。第一个较好,因为打断发生在较高层次上。

longName1 = longName2 * (longName3 + longName4 - longName5)

             + 4 * longname6;

【示例】        语句的行折叠通常用8空格,这是因为4空格会使主体部分看起来困难。

//USE THIS INDENTATION INSTEAD

if ((condition1 && condition2)

        || (condition3 && condition4)

        ||!(condition5 && condition6)) {

    doSomethingAboutIt();

}

3.3 空白处理

3.3.1 空行

空行通过分开局部相关的代码部分,增加了可读性。

 

在下列情况下总是使用两个空行:

源文件的不同部分之间

和接口定义之间

 

在下列情况下总是使用一个空行:

在方法之间

方法里面的局部变量声明和它的第一个语句之间

在块注释(参见4.1.1节)或单行注释(参见4.1.2节)之前

方法里面的逻辑部分之间,以提高可读性

3.3.2 空格

应该在下列情况下使用空格:

关键字和后面的括号之间应该使用一个空格。例如:

               while (true) {

                   ...

               }

注意在方法名和后面的括号之间不应该使用空格。这有助于分清关键字和方法调用。

逗号之后应该使用一个空格。

除了“.”之外的所有二元操作符应该用空格和操作数分开。对于一元操作符不使用空格。

【示例】        a = (a + b) / (c * d);

                    while (d++ = s++) {

                                        n++;

                    }

                    printSize("size is " + foo + "\n");

for语句中的表达式应当用空格分开。

【示例】        for (expr1; expr2; expr3)

强制类型转换应当跟随一个空格。

【示例】        myMethod((byte) aNum, (Object) x);

myMethod((int) (cp + 5), ((int) (i + 3)) + 1);

4 注释模版

5 其他

5.1 项目包路径说明

Com为代码根节点

com.business 业务代码 例如com.business.pm项目管理

com.config  配置性代码 例如全局变量

com.qqchina  核心平台代码

com.qqchina.app 核心代码,例如过滤器 

com.qqchina.commons 公用组件代码  例如权限过滤代码, BaseDao\BaseService或者   全局异常信息定义等

com.qqchina.core 平台核心业务  例如用户管理 角色管理等

com.qqchina.init  系统初始化代码  例如新部署项目的数据表或者表数据初始化

com.qqchina.util  工具类   例如正则工具类  字符串工具类 日期工具类

com.test       测试类   非公用测试类请勿提交SVN

 

i18n 为翻译文件配置

jdbc.properties  数据库连接配置

log4j.properties  log4j配置

mybatis-config.xml mybatis 配置

redis.properties  redis 配置

spring-mybatis.xml spring 配置

spring-servlet.xml   sptingMvc配置

 

5.1 SVN

1. 所有提交的代码必须是可用并且经过测试的。

2. 提交或者更新代码前要求逐个文件可行比对。

3. 测试性的代码禁止提交。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值