Java开发规范(公司规范)

Java开发规范(公司规范)
Java开发规范(公司规范)

Java开发规范

第1章序言

本规范的目的在于:建立一个可行可操作的编程标准、约定和指南,以规范公司java代码研发工作。

2013年为公司的质量年,为了提高公司研发能力,该规范的制定是为了规范java代码开发,提高java开发质量,从代码的层面规范并提高java项目的研发水平。该规范由运营中心技术小组制定,运营中心技术小组将结合PMD检查工具以及相应的检查工具,组织技术监控人员对重点项目以及新的java项目定期检查,对代码质量进行评估,对代码质量较差限期整改,并报运营中心备案作为项目考核依据。

本规范适用于2013年公司java代码研发规范。本规范的内容包括两个方面:java开发一般规范,以及java代码开发安全性规范。Java代码开发一般规范主要从java基本语法,代码格式,耦合性以及设计方面,以及代码质量因子等进行描述;java代码开发安全性规范主要从sql注入,资源注入,跨站脚步,安全边界违例,系统信息泄露进行描述。

为了方便并配合PMD检查工具等相应检查工具,方便开发者针对违规代码进行调整,本规范中java一般开发规范描述形式将结合PMD,并提供示例代码,其形式如下:

?规范描述:

?PMD规则名称:

?PMD级别(注1):

?违规示例代码:

?合法示例代码:

本规范中java安全开发规范部分将结合具体项目,对出现安全隐患的代码进行分析,以及相应的解决办法和思路上进行分析,其具体格式如下:

?风险及危害:

?应对措施:

?非安全代码示例

?安全代码示例

本规范解释权归运营中心技术小组,属于运营中心为了提供公司研发水平以及质量的一系列措施中的一部分,在后续的版本中将根据具体需要进行修改以及调整。

技术小组审核后给出相应的整改意见,对于有争议的问题,可直接与运营中心技术小组领导成员沟通。

第2章要求

气象局项目组的所有java开发人员,编写的代码必须满足第三章的所有规范(每个标题为一个规范)。项目组成员之间每周或每月互相检查对方编写的代码,若发现问题,要求对方及时更正。项目经理应该随时抽查、并最终审查代码,保证代码的规范性。

第3章java一般性研发规范

3.1 代码格式

3.1.1包、类、方法的命名规范:

?规范描述:

包,类,方法命名只能为27个英文字符以及数字,不能包括特殊字符例如-,_,$等;

包命名,首字符必须小写;

类命名,首字符必须大写;

方法命名,首字符必须小写;

常量命名,必须全部大写;

变量,以及属性命名,首字符必须小写;

在类中非创建方法其命名应避免与类名一致;

在类中属性的命名应避免与类名一致;

在同一类中属性命令应避免与方法命名一致;

在方法中命名临时变量时应避免与方法的参数名一致;

?PMD规则名称:

AvoidDollarSigns

PackageCase

ClassNamingConventions

MethodNamingConventions

SuspiciousConstantFieldName

VariableNamingConventions

MethodWithSameNameAsEnclosingClass

AvoidFieldNameMatchingTypeName

MisleadingVariableName

?规则级别:

Error High

warn High

warn High

warn High

warn High

Error High

Error High

Error High

?违规示例代码:

1、常量、变量命名

public static final int my_num = 0; //常量应大写

public String MyTest = ""; //变量命名,首字符小写

DataModule DMTest = new DataModule();//变量命名,首字符小写

2、方法命名

public class Foo {

public void FooStuff() {

}

}

3、类命名:首字符应大写

public class foo {}

4、非法使用特殊字符命名

public class Fo$o { // yikes!

}

5、非创建方法命名应避免与类名一致

public class MyClass {

// this is bad because it is a method

public void MyClass() {}

// this is OK because it is a constructor

public MyClass() {}

}

6、方法中临时变量的命名应避免与其参数一致:

public void bar(String m_baz) { // Bad

int m_boz = 42; // Bad

}

7、在类中属性的命名应避免与类名一致:

public class Foo extends Bar {

// There's probably a better name for foo

int foo;

}

8、在同一类中属性命名应避免与方法命名一致:

public class Foo {

Object bar;

// bar is data or an action or both?

void bar() {

}

}

?合法代码示例:

1、常量、变量命名:

public static final int MY_NUM = 0; //

public String myTest = "";

DataModule dmTest = new DataModule();

2、方法命名:首字符应小写

public class Foo {

public void fooStuff() {

}

}

3、类命名:首字符应大写

public class Foo {}

3.1.2方法的命名应注意避免与java中具有特殊意义的名称例如equals,

hashCode,clone,finalizer等冲突

?规范描述:

在java中某些方法是具有特殊意义的,例如boolean equals(Object o)是比较两个对象是否相等;int hashCode()取得hash值,主要用于hash表;Object clone()用于复制对象;void finalizer()用于该类实例化的对象释放时系统调用释放该对象使用的资源。这些方法具有固定的形参格式,固定的返回值,不能被其他形式或者用于其他方面的方法override,否则将降低代码可读性,并为代码维护带来隐患。

?PMD规则名称:

SuspiciousEqualsMethodName

SuspiciousHashcodeMethodName;

FinalizeOverloaded;

BooleanGetMethodName;

?规则级别:

Error High

Error High

Error High

Error High

?违规示例代码:

1、可疑的equals方法命名

public class Foo {

public int equals(Object o) {

// oops, this probably was supposed to be boolean equals

}

public boolean equals(String s) {

// oops, this probably was supposed to be equals(Object)

}

}

2、可疑的hashCode命名

public class Foo {

public int hashCode(int value) {

// oops, this probably was supposed to be hashCode

}

}

?合法代码示例:

1、正确的equals方法命名

public class Foo {

public boolean equals(Object o) {

// oops, this probably was supposed to be boolean equals

}

}

2、正确的hashCode命名

public class Foo {

public int hashCode() {

// oops, this probably was supposed to be hashCode

}

}

注:一般来说override hashCode方法为了避免键值冲突,提高hash表的查询效率,可采用37乘法原则,例如某javabean中包含两个关键属性str1,str2,str3该关键属性不能为空,这其hash值按以下算法获得:str1.hashCode()+str2.hashCode()*37+str3.hashCode()*37*37。

3.1.3Java bean中取得boolean类型的属性值必须使用is****形式命名

?规范描述:

对于java bean来说,get***是取得该bean的属性值,set***为设置该bean 的属性值,is***是获得该bean中为boolean类型的属性值,这些方法对java bean来说是具有特殊意义,如果命名不规范将导致在使用java bean内置方法时出现取值,或者设值不成功。

?PMD规则名称:

BooleanGetMethodName

?规则级别:

Error High

?违规示例代码:

public boolean getFoo(); // bad

?合法代码示例:

public boolean isFoo(); // ok

3.1.4if,else,while,for等必须使用{}

?规范描述:

If,else,while,for等分支循环语句,必须使用{}将业务处理逻辑包含在内,这样可大大提高代码可读性,有利于后续代码维护。

?PMD规则名称:

IfStmtsMustUseBraces

WhileLoopsMustUseBraces

IfElseStmtsMustUseBraces

ForLoopsMustUseBraces

?规则级别:

warn High

?违规示例代码:

1、if语句违例代码

if (foo) x++;

2、else语句违例代码

if (foo)

x++

else

x--;

3、while语句违例代码

while(x<100)

x++;

4、for语句违例代码

for(int i=0;i<10;i++)

x++;

?合法代码示例:

1、if语句

if (foo){

x++;

}

2、else语句

if (foo){

x++

}else{

x--;

}

3、while语句

while(x<100){

x++;

}

5、for语句

for(int i=0;i<10;i++){

x++;

}

3.1.5类必须包含在包里,禁止出现无包的类

?规范描述:

包是java中类所在命名空间,用于类载入时,虚拟机快速定位并查找该类;如果一个无包类,在类载入时,耗时较多,并且很可能无法找到该类。

?PMD规则名称:

NoPackage

?规则级别:

error High

3.1.6类和方法必须拥有注释,注释量占总体代码25%以上,类头部,以及

方法头部的注释应符合javadoc标准。

?规范描述:

注释多少是评价代码质量好坏的一个标准,25%是符合国际上对java注释的标准;对于类头部注释,方法头部注释符合javadoc标准,可java工具自动根据源码生成相应的java帮助文档。对于类头部注释需要包含以下信息:该类的主用功能,作者,以及创建时间等信息;对于方法头部注释需要包含以下信息:该方法的主要功能,以及参数类型含义,返回值类型含义等等。

?合法代码注释示例

1、类头部注释规范

/**

*实时数据文件解析:读取实时数据文件,对其内容进行解析,生成符合格式以及标准单位的数据集合

*@author wangliuyi

*@version 1.0

*@since2009-05-15

*/

public class DataFileParse{

2、方法头部注释规范

/**

*判断该时间是否在统计时区里面

*@param time long从实时采集文件中提取的时间,该时间为格林威治时间,单位为毫秒*@return boolean true:表示该时间在合法的时间区内false:表示该时间不合法

*/

public boolean checkStatTimeZone(long time)

3、属性以及方法内部的注释通过“//”注释

public class GeneralStat implements IStat

{

//解析数据格式的分隔符号

private String separator = ",";

//开始统计序号

private int startNum = 1;

3.2 基本语法

3.2.1不能随意捕捉异常,原则上谁捕捉谁处理

?规范描述:

Java程序运行过程中产生异常,意味着有错误产生,捕捉该异常,就需要对该异常进行处理:例如记录日志,事务回滚等,如果仅捕获而不处理,人为的屏蔽异常,调用该函数,可能为调用者带来困惑,调用者极可能认为该方法正常运行而做出错误的判断。

一般来说,异常处理机制属于应用程序总体框架的一部分,一个良好的异常处理机制可以避免系统产生的一些不可预测的结果,并提高代码可读性,可维护性,从而提高代码的质量。本规则要对异常处理进行检查,对一些捕捉后不处理,或者直接将该异常抛出等进行预警。

?PMD规则名称:

EmptyCatchBlock

?规则级别:

Warn High

?违规示例代码:

public void doSomething() {

try {

doSomething……;

} catch (IOException ioe) {

// 获取异常后没有做任何处理

}

}

?合法代码示例:

public static int parseInt(String value, int defaultValue)

{

if (isNull(value))

{

return defaultValue;

}

try

{

return Integer.parseInt(value.trim());

}

catch (Exception ex)

{

//记录日志

Log.warn(“转换异常”,ex);

//异常后返回缺省值

return defaultValue;

}

}

3.2.2if,while,try,finally,switch , synchronized , static

instantiation 里面应有相应的逻辑处理,不能为空。

?规范描述:

在if,while,try,finally,switch,synchronized,static Initializer中处理逻辑部分如果为空,很可能这段代码无任何作用,是段废弃的代码,这段代码的存在不仅对代码维护带来疑惑,降低了整体的代码质量。

?PMD规则名称:

EmptyIfStmt

EmptyWhileStmt

EmptyTryBlock

EmptyFinallyBlock

EmptySwitchStatements

EmptySynchronizedBlock

EmptyStaticInitializer

?规则级别:

Warn High

?违规示例代码:

1.if语句中为空

if (foo){

}

2.while语句中为空

while(x<100)

{

}

3.try,finally中为空

try{

}finally{

}

4.switch中为空

switch(value){

}

5.synchronized中为空

synchronized(this){

}

6.static Initializer为空

static{

}

3.2.3在处理循环中,不能在程序中人为的改变步长。

?规范描述:

在循环中对步长变量人为的改变,很有可能丧失对步长的控制,导致运行时出现一些不可预测的结果。该规则是限制开发者对这种场景的使用,毕竟步长在多个地方改变,开发者很容易没有考虑全面,导致在特殊情况下出错。

?PMD规则名称:

JumbledIncrementer

?规则级别:

Error

?违规示例代码:

1.上述代码会陷入死循环

public void foo() {

for (int i = 0; i < 10; i++) {

for (int k = 0; k < 20; i++) {

System.out.println("Hello");

}

}

3.2.4将简单类型int,short,float,double等转化成字符串时,需使用

其对应类的toString方法。

?规范描述:

将java中简单类型转换成字符串时,如果采用先转换成对应的类型的对象,然后通过值对象转换成字符串,该过程将产生两个对象的创建,而直接采用对应类型的toString方法,只产生一个对象的创建,其效率是前者的两倍。

?PMD规则名称:

UnnecessaryConversionTemporary

?规则级别:

Error High

?违规示例代码:

1、整形转字符

int value=1;

String v=new Integer(value).toString();

2、短整形转字符

short value=1;

String v=new Short(value).toString();

3、浮点转字符

float value=1.2f;

String v=new Float(value).toString();

4、双精度浮点转字符

double value=1.2d;

String v=new Double(value).toString();

?合法代码示例:

1、整形转字符

int value=1;

String v= Integer.valueOf(value);

2、短整形转字符

short value=1;

String v= Short.valueOf( value);

3、浮点转字符

float value=1.2f;

String v= Float.valueOf( value);

4、双精度浮点转字符

double value=1.2d;

String v= Double.valueOf(value;

3.2.5javaBean中hashCode,以及equals方法必须同时override。

?规范描述:

HashCode是生成hash值,可用于hash表中主键的查找,equals是比较两个对象是否相等,缺省的hashCode以及equals只能针对同一引用的对象,如果为不同的引用的对象,虽然其值是相等,但使用hashCode却是不同的值,而使用equals返回的也是false。在某些场合中,例如将某javabean对象作为hash 表的主键值,或者判断某对象是否在集合中,如果不实现hashCode,以及equals 会得到不可预测的结果。

?PMD规则名称:

OverrideBothEqualsAndHashCode

?规则级别:

Error High

?违规示例代码:

//该AgcDataInfo没有override equals方法

public class AgcDataInfo

{

Public AgcDataInfo(String planUnitNo)

{

if(planUnitNo!=null)

this.planUnitNo = planUnitNo;

}

//机组名称

String planUnitNo=””;

/**

* 生成hash值

*/

public int hashCode()

{

return this.getPlanUnitNo().hashCode();

}

/**自动生成get,set方法

public String getPlanUnitNo()

{

return planUnitNo;

}

public void setPlanUnitNo(String planUnitNo)

{

if(planUnitNo!=null)

this.planUnitNo = planUnitNo;

}

}

public void main(String[] args)

{

Collection v=new Vector();

Map map=new Hashtable();

AgcDataInfo t1=new AgcDataInfo(“test”);

AgcDataInfo t2=new AgcDataInfo(“test”);

v.add(t1);

map.put(t1,“test“);

map.put(t2,“test“);

//false而不是true

System.out.println(v.contains(t2));

//2而不是1

System.out.println(map.size());

}

合法代码示例:

public class AgcDataInfo

{

Public AgcDataInfo(String planUnitNo)

{

if(planUnitNo!=null)

this.planUnitNo = planUnitNo;

}

//机组名称

String planUnitNo=””;

/**

* 比较等式,比较值为下达时间,下达功率,机组名称

*/

public boolean equals(Object o)

{

if (o instanceof AgcDataInfo)

{

AgcDataInfo data = (AgcDataInfo) o;

return his.getPlanUnitNo().equals(data.getPlanUnitNo());

}

return false;

}

/**

* 生成hash值

*/

public int hashCode()

{

return this.getPlanUnitNo().hashCode();

}

/**自动生成get,set方法

public String getPlanUnitNo()

{

return planUnitNo;

}

public void setPlanUnitNo(String planUnitNo)

{

if(planUnitNo!=null)

this.planUnitNo = planUnitNo;

}

}

public void main(String[] args)

{

Collection v=new Vector();

Map map=new Hashtable();

AgcDataInfo t1=new AgcDataInfo(“test”);

AgcDataInfo t2=new AgcDataInfo(“test”);

v.add(t1);

map.put(t1,“test“);

map.put(t2,“test“);

//true

System.out.println(v.contains(t2));

//1

System.out.println(map.size());

}

3.2.6懒式方式创建对象:不能采用双检查惯用法

?规范描述:

双检查一般用于c,c++懒式方式获得资源时惯用模式,但在java中该模式是不适用的,因为java创建对象时,先将对象创建后,直接将指针赋予给变量,然后才进行后续的初始化,在初始化这段空白期中,如果另外的线程获得该对象的引用,调用该对象,会产生一些不可预测的结果。

?PMD规则名称:

DoubleCheckLock

?规则级别:

Error High

?违规示例代码

public class Foo {

Object baz;

Object bar() {

if(baz == null) { //baz may be non-null yet not fully created

synchronized(this){

if(baz == null){

baz = new Object();

}

}

}

return baz;

}

}

?合法代码示例:

public class Foo{

Object baz;

Object bar() {

synchronized(this){

if(baz == null){

baz = new Object();

}

}

return baz;

}

}

3.2.7不能在finally中返回值。

?规范描述:

finally中是必须执行的程序块,如果在里面返回,则表示该方法返回值只能为这个,其他地方返回值可能无效。

?PMD规则名称:

ReturnFromFinallyBlock

?规则级别:

Error High

?违规示例代码:

public int foo(String value) {

try {

return Integer.parseInt(value);

} catch (Exception e) {

return 0;;

} finally {

return -1; // Very bad.

}

}

?合法代码示例:

public int foo(String value) {

int ret=0;

try {

ret= Integer.parseInt(value);

} catch (Exception e) {

ret= 0;

} finally {

//处理其他事宜

……

}

return ret; // Very good.

}

3.2.8Boolean实例化时,应用使用Boolean.valueOf,Boolean.TRUE,

Boolean.FALSE。

?规范描述:

采用Boolean.valueOf,Boolean.TRUE,Boolean.FALSE进行实例化具有更高的效率。

?PMD规则名称:

BooleanInstantiation

?规则级别:

Error High

?违规示例代码:

Boolean bar = new Boolean("true");//效率较低

?合法代码示例:

// just do a Boolean bar = Boolean.TRUE;

Boolean buz = Boolean.valueOf(false);

// just do a Boolean buz = Boolean.FALSE;

3.2.9Integer,Byte,Short,Long等实例化时,应用使用valueOf

?规范描述:

Integer,Byte,Short,Long实例化时使用valueOf具有更高的效率。

?PMD规则名称:

IntegerInstantiation

ByteInstantiation

ShortInstantiation

LongInstantiation

?规则级别:

Error High

?违规示例代码:

Integer v=new Integer(1);

Byte v=new Byte(1);

Short v=new Short(1);

Long v=new Long(1);

?合法代码示例:

Integer v= Integer.valueOf(1);

Byte v=new Byte.valueOf(1);

Short v= Short.valueOf(1);

Long v= Long.valueOf(1);

3.2.10对于多个if语句嵌套的情况下能够整合尽量整合。

?规范描述:

对于多个if语句嵌套的情况下能够整合必须根据情况整合。

?PMD规则名称:

CollapsibleIfStatements

?规则级别:

Error

?违规示例代码:

void bar() {

if (x) {

if (y) {

// do stuff

}

}

}

?合法代码示例:

void bar() {

if (x&y)

{

// do stuff

}

}

3.2.11override function,不能只有super.function语句,否则视为无效

代码

?规范描述:

Over ride function则表示为该方法定义新的行为,如果仅仅super.function(),则没有任何意义,该处代码视为废弃代码。。

?PMD规则名称:

UselessOverridingMethod

?规则级别:

Error High

?违规示例代码:

public class Foo {

public void foo(String bar) {

super.foo(bar);

//Why bother overriding?

}

?合法代码示例:

3.2.12Collection.toArray的注意事项。

?规范描述:

对于Collection接口来说,使用toArray转数据时,如果没有指明类型,将返回Object[],而不能使用类似(Integer[])list.toArray()进行强转成其他类型的数组,需要类似toArray(new Integer[list.size()])方式进行转换。

?PMD规则名称:

ClassCastExceptionWithToArray

?规则级别:

Error High

?违规示例代码:

Collection c=new ArrayList();

Integer obj=new Integer(1);

c.add(obj);

// this would trigger the rule (and throw a ClassCastException

if executed)

Integer[] a=(Integer [])c.toArray();

?合法代码示例:

Collection c=new ArrayList();

Integer obj=new Integer(1);

c.add(obj);

// this wouldn't trigger the rule

Integer[] b=(Integer [])c.toArray(new Integer[c.size()]);

3.2.13对于BigDecimal方法,应避免使用float值,double值进行创建,

应使用字符串形式创建。

?规范描述:

对于BigDecimal,直接使用float,double创建时,因为精度不同会发生变化,例如0.1,会变成.1000000000000000055511151231257827021181583404541015625,这样会导致业务计算造成偏差。

?PMD规则名称:

AvoidDecimalLiteralsInBigDecimalConstructor

?规则级别:

Error High

?违规示例代码:

// this would trigger the rule

BigDecimal bd=new BigDecimal(1.123);

?合法代码示例:

// this wouldn't trigger the rule

BigDecimal bd=new BigDecimal("1.123");

3.2.14String,BigDecimal,BigInteger等值类型调用replace,add等方法

的注意事项。

?规范描述:

String,BigDecimal,BigInteger为值类型,当调用replace,replaceAll 对字符串中替代函数,BigDecimal,BigIneger等add运算函数,会生成一个结果值对象返回,而不是修改本身调用者对象,该规则正是在这方面进行检查。

?PMD规则名称:

UselessOperationOnImmutable

?规则级别:

Error High

?违规示例代码:

BigDecimal bd=new BigDecimal(10);

bd.add(new BigDecimal(5)); // bd仍然为10

?合法代码示例:

BigDecimal bd=new BigDecimal(10);

bd = bd.add(new BigDecimal(5)); // bd为15

3.2.15需要注意的引起NullException的语句。

?规范描述:

对空指针对象进行操作时,会抛出NullException异常,该规则则是在代码编写以及代码健全性上避免这些导致空指针异常的场景,规则如下:使用equals时,常量应该放在前面,例如常量.equals(对象);

判非空:string!=null&&string.length()>0;

判空: string==null||string.length()<=0;

执行类似equals语句:a!=null&&a.equals(b);

Java开发规范

Java开发规范

目录 第1章序言 (4) 第2章java一般性研发规范 (5) 2.1 代码格式 (5) 2.1.1包、类、方法的命名规范: (5) 2.1.2方法的命名应注意避免与java中具有特殊意义的名称例如equals, hashCode,clone,finalizer等冲突 (7) 2.1.3Java bean中取得boolean类型的属性值必须使用is****形式命名 (9) 2.1.4if,else,while,for等必须使用{} (9) 2.1.5类必须包含在包里,禁止出现无包的类 (10) 2.1.6类和方法必须拥有注释,注释量占总体代码25%以上,类头部,以及方法 头部的注释应符合javadoc标准。 (11) 2.2 基本语法 (12) 2.2.1不能随意捕捉异常,原则上谁捕捉谁处理 (12) 2.2.2if,while,try,finally,switch ,synchronized ,static instantiation 里面应有相应的逻辑处理,不能为空。 (13) 2.2.3在处理循环中,不能在程序中人为的改变步长。 (14) 2.2.4将简单类型int,short,float,double等转化成字符串时,需使用其对 应类的toString方法。 (14) 2.2.5javaBean中hashCode,以及equals方法必须同时override。 (15) 2.2.6懒式方式创建对象:不能采用双检查惯用法 (18) 2.2.7不能在finally中返回值。 (19) 2.2.8Boolean实例化时,应用使用Boolean.valueOf,Boolean.TRUE, Boolean.FALSE。 (19) 2.2.9Integer,Byte,Short,Long等实例化时,应用使用valueOf (20) 2.2.10对于多个if语句嵌套的情况下能够整合尽量整合。 (20) 2.2.11override function,不能只有super.function语句,否则视为无效代码 21 2.2.12Collection.toArray的注意事项。 (21) 2.2.13对于BigDecimal方法,应避免使用float值,double值进行创建,应使 用字符串形式创建。 (22) 2.2.14String,BigDecimal,BigInteger等值类型调用replace,add等方法的注 意事项。 (23) 2.2.15需要注意的引起NullException的语句。 (23) 2.2.16ResultSet使用next时,需要判断是否具有记录再进行一下步操作。 25 2.2.17字符串使用相应的规则。 (25) 2.2.18禁止直接调用 System.gc(),System.getRuntime().gc(),System.runFinalization()。 (27) 2.2.19finalize相应的规则。 (27) 2.2.20禁止在代码中使用System.out,ex.printStackTrace打印日志。 (28) 2.2.21系统资源释放(谁创建的,谁关闭) (29) 2.2.22使用Clone时相应的规则。 (32) 2.2.23java Bean类必须实现Serialize接口。 (33)

Java编程规范试题

姓名: ____________ 工号:_______________ 部门:____________ 成绩: 一. 判断题(共15题,每题2分,直接在括号内打“/或“X”) 1、任何时候都不要使接口可以序列化。x 2、相对独立的程序块之间、变量说明之后必须加空行。V 3、当程序需要释放对象的时候,应该手工调用fin alize 方法以释放对象。x 4、公司的规范要求注释率是20%以上,并且必须有助于对程序的阅读理解。x 5、为了程序更加简洁,我们应该尽量使用下面的方式来赋值: a = b = 1 。x 6、每个类都需要定义构建器。x 7、类名、方法名、属性名的命名,都应该使用意义完整的英文描述。V 8、main() 方法的定义是public static void main(String args[]) 。x 9、常量名应该使用全大写,英文单词之间用下划线或者-分隔开。并且,常量应该使用final static 修饰。x 10、公有方法参数名可以和属性名相同,但局部变量不能和属性名相同。V 11、一两行代码就能完成的功能没有必要编写方法实现。x 12、对于模块间接口方法的参数的合法性检查,调用者和被调用者都应该对参数进行合法性检查。 x 13、运行期异常使用RuntimeException的子类来表示,必须在方法声明上加throws子句。x非运行 期异常是从Exception继承而来的,不用在可能抛出异常的方法声明上加throws子句。x 14、使用Objectstream 的方法后,调用release(),释放对象。X 15、减小单个方法的复杂度,使用的if, while, for, switch 语句要在10个以内。V 二、单项选择题(共23题,每题2分) (c ) 1、排版时,代码缩进应该采用的方式是: (A)Tab缩进 (B)2个空格缩进

java项目各部分命名规则

学习Java的童鞋们都知道,Java的包、类、借口、方法、变量、常量;JavaEE 的三层模型等都有一套约定俗成的命名规则。 我学习每种语言都会关注相应的命名规则,一则体现自己比较专业;二来方便后检查,看到名称就知道是属于什么类型、占用多少内存、使用是否正确等;三又可以供其他人参考。 当然,学习Java也不例外,每次新建Java Project的时候都会想一下命名方式,尤其是对Java Package的命名。起初学习Java的时候都会推敲一番,该怎么命名所建立的Java Package,后来给自己约定俗成了,推敲少了,但命名确更规范了。 下面正式进入主题,讲讲我对Java Package命名规则的一些思考。 Java的包名都有小写单词组成,类名首字母大写;包的路径符合所开发的系统模块的定义,比如生产对生产,物资对物资,基础类对基础类。以便看了包名就明白是哪个模块,从而直接到对应包里找相应的实现。 由于Java面向对象的特性,每名Java开发人员都可以编写属于自己的Java Package,为了保障每个Java Package命名的唯一性,在最新的Java编程规范中,要求开发人员在自己定义的包名前加上唯一的前缀。由于互联网上的域名称是不会重复的,所以多数开发人员采用自己公司在互联网上的域名称作为自己程序包的唯一前缀。例如:com.sun.swt.……。 从而,我们知道,一般公司命名为“com.公司名.项目名.模块名....”。 那,我们个人的项目又怎么命名呢? 经过我对“个人的”单词搜索,有“individual、personal、private、one-man”,进一步对以上4个单词词意的分析,并在保证了唯一性,使用每个单词的前4个字母作为前缀,正好和“com”也做了区分。如下: indi : 个体项目,指个人发起,但非自己独自完成的项目,可公开或私有项目,copyright主要属于发起者。 包名为“indi.发起者名.项目名.模块名.……”。 pers : 个人项目,指个人发起,独自完成,可分享的项目,copyright主要属于个人。 包名为“pers.个人名.项目名.模块名.……”。 priv : 私有项目,指个人发起,独自完成,非公开的私人使用的项目,copyright 属于个人。 包名为“priv.个人名.项目名.模块名.……”。 onem : 与“indi”相同,推荐使用“indi”。 另外,我为了区分团队项目和前面所说项目的区分,还有了一下扩展: team :

JAVA开发规范文档

Java 开发规范文档 一:目的 使本组织能以标准的,规范的方式设计和编码。通过建立编码规范,以使每个开发人员养成良好的编码风格和习惯;并以此形成开发小组编码约定,提高程序的可靠性,可读性,可修改性,可维护性和一致性等,增进团队间的交流,并保证软件产品的质量。 二:代码组织与风格 1:长度:为便于阅读和理解,单个函数的有效代码长度当尽量在100行以内(不包括注释行),当功能模块过大时往往采用使用子函数将相应的功能抽取出来,这也有利于提高代码的重用度。 2:单个类不宜过大,当出现此类过大时当将相应功能的代码重构到其他类中,通过组合等方式来调用,建议单个类的长度包括注释行不超过1500行。尽量避免使用大类和长方法。3:间隔:类,方法及功能块间等应以空行相隔,以增加可读性,但不得有无规则的大片空行。操作符两端应当各空一个字符以增加可读性。 三:注释 1:注释应该增加代码的清晰度。代码注释的目的时要使代码更易于被其他开发人员等理解。2:保持注释的简洁。 3:注释信息应该包括代码的功能。 4:除变量定义等较短语句的注释使用行尾注释外,其他注释当避免使用行尾注释。 5:JavaDoc规范 对类,方法,变量等注释需要符合javadoc规范,对每个类,方法都应详细说明其功能条件,参数等。类注释中应当包含版本和作者信息。 1)类,接口注释在类,接口定义之前当对其进行注释,包括类,接口的目的,作用,功能,继承于何种父类,实现的接口,实现的算法,使用方法,示例程序等。 2)方法注释以明确该方法功能,作者,各参数含义以及返回值等。

3)其他注释应对重要的变量及不易理解的分支条件表达式加以注释,以说明其含义等。四命名规范 1:对变量,类,接口及包的命名应该使用英文。严禁使用汉语拼音及不相关单词命名。更不可以使用汉字来进行命名。采用大小写混合,提高名字的可读性。一般应该采用小写字母,但时类和接口的名称的首字母,以及任何中间单词的首字母应该大写。包名全部小写。 2:尽量少用缩写,但如果一定要用,当使用公共缩写和习惯缩写等,如implement可缩写为impl,manager可缩写成mgr等。 3:包名一般以项目或模块名命名,少用缩写和长名,一律小写。 包名按照如下规定组成[基本包].[项目名].[模块名].[子模块名].…. 如:org.skyinn.skyhome.dao.hibernate。 不得将类直接定义在基本包下,所有项目中的类,接口等都当定义在各自的项目和模块包中。 4:类,接口所有单词首字母大写,最好能够见名知意。一般采用名词。接口可带I前缀。 或able,dao后缀。 5:字段常量采用完整的英文大写单词,单词之间用下划线连接,如DEFAULT_V ALUE. 6:变量和参数对不易识别出该变量类型的变量应使用类型缩写作其前缀,如字符串使用strXXX,boolean使用isXXX,hasXXX等等。除第一个单词外其余单词的首字母大写。7:集合采用复数名称来表示队列中存放的对象类型,名词采用完整的英文描述。 例如:Vector vProducts= new Vector(); Array aryUsers= new Array(); 8:方法方法的名称应采用完整的英文描述,大小写混合使用:所有中间单词的第一个字母大写。方法名称的第一个单词常常采用一个强烈动作色彩的动词。取值类使用get前缀,设置类使用set前缀。例如getName(),setSarry()。 9:异常类名由表示该异常类型的单词和Exception组成,如ActionException。异常实例一般使用e,ex等。 10:数组的命名 数组应该总是用下面的方式来命名:byte[] buffer; 而不是:byte buffer[]; 五:类与接口 1:基本原则:一个类只做一件事情。另一个原则时根据每个类的职责进行划分,比如用User 来存放用户信息,而用UserDAO来对用户信息进行数据访问操作,用UserServer对用户信息的业务操作等等。多个类中使用相同方法时将其方法提到一个接口中或使用抽象类,尽量提高重用度。不希望被实例化的类的缺省构造方法声明为private。 2:一般而言,接口定义行为,而抽象类定义属性和共有行为,注意2者的取舍,在设计中可由接口定义公用的行为,由一个抽象类来实现其部分或全部方法,以给子类提供统一的行为为定义。 六:方法 一个方法只完成一项功能。方法参数类型和参数返回值尽量接口化,以屏蔽具体的实现细节,提高系统的可扩展性,例如:public void addUser(List userList){} public List listAllUsers(){} 七:Web 命名规范 一:jsp页面命名 对于某个功能块的增删改查页面定义,最好使用

编码规范

编码规范 1.编写目的 本规范的目的在于编写可靠的、一致的、便于理解的JAVA源代码,并且写出的代码被其他人阅读,所有的JAVA代码保持良好的致性,容易在以后的阶段中进行维护和升级。同时,也是为了通过一定时间的实践,增加我们的软件产品的投入产出量,以提高我们的工作效率。 2.适应范围 适用于JAVA程序开发人员,或后续开发人员。可以方便系统的开发与维护,使系统开发与维护可以顺利展开。 3.代码命名一般原则 我们开发的是一个JSP新闻发布系统,用的编码方式是JAVA,因此用的命名总原则是: 3.1.用全英文单词命名的方式,准确地描述变量、属性、类等。 如:使用firstNname、grandTotal、等命名就比x1、y1、fn等更容易让人理解其含义,尽管它们的长度要大一些。 3.2.采用一些更加准确的术语来命名。 例如:如果我们的用户称他们的clients为customers ,那么我们就应该用customer来命名,而不是采用client来命名。这是一些细微的地方,但也希望能注意。 3.3.采用大小写混合的方式来命名,以便命名有很好的可读性。 在JAVA代码中,将采用如下原则:类或接口命名中每个单词的首字母均大写,而单词的剩余部分均小写。其它像变量、成员方法、属性等除第一个单词全部小写以外,其它单词的首写字母均大写,而单词的剩余部分均小写。 3.4.尽量少用单词的缩写形式,但如果一定要用,则选择大家通用的缩写方式,并且要在本JAVA源代码中坚持用它,而不要一会用这种缩写方式,一会用那种 缩写方式。 比如,如果要用“number”的缩写方式,则可用“no”或“num”两种缩写方式,而不要用“nu”这种大家不常用的缩写方式,并且要保持不变。 3.5.尽量避免太长的命名,一般以少于20个字符为宜。

华为Java语言编码规范标准

Java语言编码规范 Prepared by 拟制Date 日期 yyyy-mm-dd Reviewed by 评审人Date 日期 yyyy-mm-dd Approved by 批准Date 日期 yyyy-mm-dd

Revision Record 修订记录

Table of Contents 目录 1. 范围 (4) 2. 规范性引用文件 (4) 3. 术语和定义 (4) 4. 排版规范 (5) 4.1. 规则 (5) 4.2. 建议 (7) 5. 注释规范 (9) 5.1. 规则 (9) 5.2. 建议 (15) 6. 命名规范 (17) 6.1. 规则 (17) 6.2. 建议 (18) 7. 编码规范 (20) 7.1. 规则 (20) 7.2. 建议 (24) 8. JTEST规范 (26) 8.1. 规则 (26) 8.2. 建议 (27)

1.范围 本规范规定了使用Java语言编程时排版、注释、命名、编码和JTEST的规则和建议。 本规范适用于使用Java语言编程的产品和项目。 2.规范性引用文件 下列文件中的条款通过本规范的引用而成为本规范的条款。凡是注日期的引用文件,其随后所有的修改单(不包括勘误的内容)或修订版均不适用于本规范,然而,鼓励根据本规范达成协议的各方研究是否可使用这些文件的最新版本。凡是不注日期的引用文件,其最新版本适用于本规范。 3.术语和定义 规则:编程时强制必须遵守的原则。 建议:编程时必须加以考虑的原则。 格式:对此规范格式的说明。 说明:对此规范或建议进行必要的解释。 示例:对此规范或建议从正、反两个方面给出例子。

华为JAVA编程规范

1 Java 编程规范 1.1 排版 1.1.1 规则 规则1程序块要采用缩进风格编写,缩进的空格数为4个,不允许使用TAB缩进。(1.42+) 说明:缩进使程序更易阅读,使用空格缩进可以适应不同操作系统与不同开发工具。 规则2分界符(如大括号…{?和…}?)应各独占一行,同时与引用它们的语句左对齐。在函数体的开始、类和接口的定义、以及if、for、do、while、switch、case语句中的程序 或者static、,synchronized等语句块中都要采用如上的缩进方式。(1.42+) 示例: if (a>b) { doStart(); } 规则3较长的语句、表达式或参数(>80字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐, 语句可读。(1.42+) 示例: if (logger.isDebugEnabled()) { logger.debug("Session destroyed,call-id" + event.getSession().getCallId()); } 规则4不允许把多个短语句写在一行中,即一行只写一条语句(1.42+) 说明:阅读代码更加清晰 示例:如下例子不符合规范。 Object o = new Object(); Object b = null; 规则5if, for, do, while, case, switch, default 等语句自占一行,且if, for, do, while,switch等语句的执行语句无论多少都要加括号{},case 的执行语句中如果定义变量必须加括号{}。 (1.42+) 说明:阅读代码更加清晰,减少错误产生 示例: if (a>b) { doStart(); }

JAVA开发规范

1.编程规范 (一)命名规范 1.【强制】所有编程相关的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束 反例:_name / name_ / $name / name$ 正例:name 2.【强制】所有编程相关的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。 说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,即使纯拼音命名方式也要避免采用。 反例:XingMing [姓名] /xingBie() [性别] 正例:name[姓名] sex[性别]等国际通用的名称,可视为英文。 3. 【强制】类名使用UpperCamelCase(第一个词的首字母,以及后面每个词的首字母都大写,叫做“大骆驼拼写法”) 风格,必须遵从驼峰形式,但以下情形例外:(领域模型的相关命名)DO / DTO / VO / DAO 等。正例:MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion 反例:macroPolo / UserDo / XMLService / TCPUDPDeal / TAPromotion

4. 【强制】方法名、参数名、成员变量、局部变量都统一使用lowerCamelCase (第一个词的首字母小写,后面每个词的首字母大写,叫做“小骆驼拼写法”)风格,必须遵从驼峰形式。 正例: localValue / getHttpMessage() / inputUserId 5. 【强制】常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。 正例: MAX_STOCK_COUNT 反例: MAX_COUNT 6. 【强制】抽象类命名使用 Abstract或Base 开头;异常类命名使用 Exception结尾;测试类命名以它要测试的类的名称开始,以 Test 结尾。 7. 【强制】中括号是数组类型的一部分,数组定义如下:String[] args; 请勿使用String args[]的方式来定义 8. 【强制】POJO类中的任何布尔类型的变量,都不要加 is,否则部分框架解析会引起序列化错误。 反例:定义为基本数据类型 boolean isSuccess;的属性,它的方法也是isSuccess(),RPC框架在反向解析的时候,“以为”对应的属性名称是 success,导致属性获取不到,进而抛出异常。

java编程规范+数据库命名规范

Java编程规范 本编程规范建立在标准的Java编程规范的基础上,如和标准的Java编程规范有冲突,以本编程规范为准。 1.1 程序结构 包名 引入包/类名 类注释 类 常量//常量注释 构造器注释 构造器 构造器注释 构造器 方法注释 方法 方法注释 方法 1.2 命名规范 命名规范使得程序更易理解,可读性更强。并且能够提供函数和标识符的信息。 文件命名规范: java程序使用如下的文件名后缀: 文件类型后缀 Java 源文件.java Java 字节码文件.class 对系统的文件命名方式有待于根据实际业务决定。 包命名规范: 包名应该唯一,它的前缀可以为任何小写的ASCII字符,包名按照公司内部的命名规范,这些规范指出了某种目录名,主要包括部门,项目,机器,或者登录名。 命名规则为: app.系统名.模块名.xxx.xxx 包命名举例: app.oa.interceptor.xxx app.oa.sys.xxx 类命名规范: 类名应该是名词,并且是大小写混合的。首字母要大写。尽量保证类名简单并且描述性强。避免使用只取单词首字母的简写或者单词的缩写形式,除非缩写形式比单词的完整形式更常用(例如:URL或者HTML)。文件名必须和public的类名保持一致,注意大小写(JBuilder 等一些编译器可以忽略大小写,要特别注意)。如是实现类命名后缀+Impl。 类命名举例: classLoginAction; classUserServiceImpl; 接口命名规范:

接口命名方式与类命名方式相同。 接口命名举例: interfaceIUserService; interfaceSysYhjsDAO; 方法命名规范; 方法名应该为动词,并且是大小写混合的。首字母要小写,方法名的第 二个单词的第一个字母大写。 方法命名举例: String getNoticeNo(); Collection findByCondition(String); 变量命名规范 变量,以及所有的类实例应为首字母小写的大小写混合形式。变量名的第二个单词 的首字母大写。变量名的首字母不能为下划线或者$符。 变量名应该尽可能的短小,但要有意义。变量名应该便于记忆,也就是说变量名应 该尽可能的做到见名知意。除了暂时使用的变量外(一般用于循环变量),应该避免使 用只有一个字母的变量名。对于临时变量一般说来:i,j,k,m,n代表整型变量。c,d,e代表字符型变量。 变量命名举例: String dataType; String name; inti; char c; 常量命名规范: 声明为类常量的变量或者ANSI常量应该全部为大写字母,并且每个单词间用下划 线“_”隔开。为了便于调试,应避免使用ANSI常量。 常量命名举例: static final int MIN_WIDTH = 4; 1.3 注释规范 Java 提供了两种类型的注释:程序注释和文档注释。程序注释是由分隔符/*…*/,和// 隔开的部分,这些注释和C++ 中的注释一样。文档注释(即“doc 注释”)是Java 独有的。由分隔符/**…*/隔开。使用javadoc工具能够将文档注释抽取出来形成HTML 文件。程序注释主要是对程序的某部分具体实现方式的注释。文档注释是对程序的描述性注释,主要是提供给不需要了解程序具体实现的开发者使用。注释应该是代码的概括性描述,提供不易直接从代码中得到的信息,并且只包含对阅读和理解程序有用的信息。例如注释中包含相应的包如何编译或者在哪个目录下,而不应该包括这个包驻留在哪儿的信息。注释中可以描述一些精妙的算法和一些不易理解的设计思想,但应该避免那些在程序代码中很清楚的表达出来的信息。尽可能的避免过时的信息。错误的注释比没有注释更有害。经常性的注释有时也反映出代码质量的低下。 …程序注释: 程序注释有四种格式:块注释格式,单行注释,跟随注释,行尾注释 ?块注释格式 块注释主要用于描述:文件、方法、数据结构和算法。一般在文件或者方法定义的 之前使用。也可以用在方法定义里面,如果块注释放在函数或者方法定义里,它必须与它所描述的代码具有相同的缩进形式。

Java编程规范

Java编程规范本文引用阿里Java开发手册。GitHub阅读地址: 目录 编程规约 - 命名规约 - 常量定义 - 格式规范 - OOP规约 - 集合处理 - 并发处理 - 控制语句 - 注释规约 - 其他 - 异常处理 - 建表规约 - 索引规约 - SQL规约

- ORM规约 编程规约 命名规约 1、【强制】所有编程相关命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束 反例: _name / __name / $Object / name_ / name$ / Object$1 2、【强制】所有编程相关的命名严禁使用拼音与英语混合的方式,更不允许直接使用中的方式。 说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,即纯拼音的命名方式也要避免采用。 反例: DaZhePromotion [打折] / getPingfenByName() [评分] / int 变量 = 3; 正例: ali / alibaba / taobao / cainiao / aliyun / youku / hangzhou 等国际通用的名称,可视为英文。12345 3、【强制】类名使用 UpperCamelCase 风格,必须遵从驼峰形式,但以下情形例外:(领域模型的相关命名) DO / DTO / VO / DAO 等。 正例: MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion 反例: macroPolo / UserDo / XMLService / TCPUDPDeal

/ TAPromotion123 4、【强制】方法名、参数名、成员变量、局部变量都统一只用 lowerCamelCase 风格,必须遵从驼峰形式。 正例: localValue / getHttpMessage() / inputUserId1 5、【强制】常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。 正例: MAX_STOCK_COUNT 反例: MAX_COUNT123 6、【强制】抽象类命名使用 Abstract 或 Base 开头;异常类命名使用 Exception 结尾;测试类命名以它要测试的类的名称开始,以 Test 结尾。 7、【强制】中括号是数组类型的一部分,数组定义如下:String[] args ; 反例:请勿使用 String args[] 的方式来定义1 8、【强制】 POJO 类中的任何布尔类型的变量,都不要加 is,否则部分框架解析会引起序列化错误。 反例:定义为基本数据类型 boolean isSuccess;的属性,它的方法也是 isSuccess(), RPC框架在反向解析的时候,“以为”对应的属性名称是 success,导致属性获取不到,进而抛出异常。1 9、【强制】包名统一使用小写,点分隔符之间有且仅有一

java项目团队开发规范

项目团队开发规范

修订历史记录

目录 1引言 (6) 1.1 编写目的 (6) 1.2 预期读者 (6) 1.3 编写背景 (6) 2概述 (7) 2.1 目标 (7) 2.2 修改及完善 (7) 3详细规范 (7) 3.1 使用的工具 (7) 3.2 框架设计 (7) 3.3 包目录 (8) 3.4 编码规范 (10) 3.4.1 目的 (10) 3.4.2 依据 (10) 3.4.3 具体规范 (10) 3.4.3.1 编码风格 (10) 3.4.3.1.1 缩进 (10) 3.4.3.1.2 空格 (11) 3.4.3.1.3 对齐 (12) 3.4.3.1.4 空行 (12)

3.4.3.1.5 代码长度 (13) 3.4.3.1.6 行数 (13) 3.4.3.1.7 注释 (14) 3.4.3.2 代码效率 (17) 3.4.3.2.1 综述 (17) 3.4.3.2.2 具体实现 (17) 3.4.3.3 异常处理 (17) 3.4.3.3.1 处理CHECK 异常与UNCHECK异常 (17) 3.4.3.4 程序调试 (17) 3.4.4 日常交流 (18) 3.4.4.1 互相促进 (18)

1引言 1.1 编写目的 本文档作为项目团队开发规范的说明书,描述了项目开发过程中的使用的工具,框架,代码编写规范及注意问题,作为项目团队建设,开发及测试工作的依据。 1.2 预期读者 本文档的预期读者包括以下几类: ?项目组长 ?项目组全体成员 1.3 编写背景 根据公司现有的开发状况,决定组件稳定的项目开发团队,制定全体团队成员共识的开发规范,有助于提高项目开发的效率、项目团队整体水平的提升。

java类名命名规范

竭诚为您提供优质文档/双击可除 java类名命名规范 篇一:java各种命名规范 定义规范的目的是为了使项目的代码样式统一,使程序有良好的可读性。 包的命名(全部小写,由域名定义) java包的名字都是由小写单词组成。但是由于java面向对象编程的特性,每一名java程序员都可以编写属于自己的java包,为了保障每个java包命名的唯一性,在最新的java编程规范中,要求程序员在自己定义的包的名称之前加上唯一的前缀。由于互联网上的域名称是不会重复的,所以程序员一般采用自己在互联网上的域名称作为自己程 序包的唯一前缀。 例如:net.frontfree.javagroup 类的命名(单词首字母大写) 根据约定,java类名通常以大写字母开头,如果类名称由多个单词组成,则每个单词的首字母均应为大写例如testpage;如果类名称中包含单词缩写,则这个缩写词的每个字母均应大写,如:xmlexample,还有一点命名技巧就是

由于类是设计用来代表对象的,所以在命名类时应尽量选择名词。 例如:graphics 方法的命名(首字母小写,字母开头大写) 方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头。例如:drawimage 常量的命名(全部大写,常加下划线) 常量的名字应该都使用大写字母,并且指出该常量完整含义。如果一个常量名称由多个单词组成,则应该用下划线来分割这些单词。 例如:max_Value 参数的命名 参数的命名规范和方法的命名规范相同,而且为了避免阅读程序时造成迷惑,请在尽量保证参数名称为一个单词的情况下使参数的命名尽可能明确。 javadoc注释 java除了可以采用我们常见的注释方式之外,java语言规范还定义了一种特殊的注释,也就是我们所说的javadoc注释,它是用来记录我们代码中的api的。javadoc 注释是一种多行注释,以/**开头,而以*/结束,注释可以包含一些html标记符和专门的关键词。使用javadoc注释的好处是编写的注释可以被自动转为在线文档,省去了单独

java开发文档

Java 开发规范 1.命名规范 1.包命名规范: 1.业务模块的包命名格式如下: src/业务模块名称 2.Service接口的包命名格式如下: com.greencloud.service 3.Service接口实现类的包命名格式如下:com.greencloud.service.impl 4.Dao 接口的包命名格式如下:com.greencloud.dao 5.Dao 接口的实现类的包命名格式如下:com.greencloud.dao.impl 6.Fa?ade接口的包命名格式如下: com.greencloud.service.facade 7.Fa?ade接口的实现类的包命名格式如下:com.greencloud.service.facade.impl 8.业务域对象的包命名格式如下:com.greencloud.entity 9.异常类的包命名格式如下:com.greencloud.exception 10.枚举类的包命名格式如下:com.greencloud.enum 11.常量类的包命名格式如下:com.greencloud.contant 12.帮助类的包命名格式如下:com.greencloud.util 2.类命名规范: 1.Service接口的命名格式如下: I+表名+service 2.Service接口实现类的命名格式如下: 表名+serviceImpl 3.Dao 接口的命名格式如下:I+表名+dao 4.Dao 接口的实现类的包命名格式如下:表名+daoImpl 5.Fa?ade接口的命名格式如下: I+包名+facadeService 6.Fa?ade接口的实现类的命名格式如下:包名+facadeServiceImpl 7.业务域对象的命名格式如下:表名 8.异常类的命名格式如下:描述异常情况+exception 9.枚举类的命名格式如下:描述枚举情况+enum 10.常量类的命名格式如下: 描述常量情况+contant 11.帮助类的命名格式如下: 描述帮助类型+util 3.方法命名规范: 1.查询单个实体对象的方法命名格式: 1.查询单个的实体对象:load+实体对象名+by+字段名 2.如果类中只存在一个加载实体对象的方法:load+实体对象名 3.如果加载一个实体对象需要多个字段组合查询:load+实体对象名+by+最核 心的查询字段或者load+实体对象名+by+ 核心字段1+And+核心字段2 4.失败抛出flex.messaging.service.ServiceException异常或者它的子类 5.成功返回实体对象 例如:通过code字段查询CodeBase实体对象 public CodeBase loadCodeBaseByCode(String code) throws ServiceException 2.查询多个实体对象的方法命名格式:

Java编程要求规范精彩试题

JAVA编程规范--试题 姓名:工号:部门:成绩: 一. 判断题(共15题,每题2分,直接在括号内打“√”或“×”) 1、任何时候都不要使接口可以序列化。x 2、相对独立的程序块之间、变量说明之后必须加空行。√ 3、当程序需要释放对象的时候,应该手工调用finalize方法以释放对象。x 4、公司的规范要求注释率是20%以上,并且必须有助于对程序的阅读理解。x 5、为了程序更加简洁,我们应该尽量使用下面的方式来赋值:a = b = 1 。x 6、每个类都需要定义构建器。x 7、类名、方法名、属性名的命名,都应该使用意义完整的英文描述。√ 8、main() 方法的定义是public static void main(String args[])。x 9、常量名应该使用全大写,英文单词之间用下划线或者-分隔开。并且,常量应该使用 final static修饰。x 10、公有方法参数名可以和属性名相同,但局部变量不能和属性名相同。√ 11、一两行代码就能完成的功能没有必要编写方法实现。x 12、对于模块间接口方法的参数的合法性检查,调用者和被调用者都应该对参数进行合 法性检查。x 13、运行期异常使用RuntimeException的子类来表示,必须在方法声明上加throws子句。 x非运行期异常是从Exception继承而来的,不用在可能抛出异常的方法声明上加throws 子句。x 14、使用ObjectStream 的方法后,调用release() ,释放对象。X 15、减小单个方法的复杂度,使用的 if, while, for, switch 语句要在10个以内。√ 二、单项选择题(共23题,每题2分) ( c )1、排版时,代码缩进应该采用的方式是: (A)Tab缩进 (B)2个空格缩进 (C)4个空格缩进 (D)8个空格缩进

Java命名规范

命名规范? 本规范主要针对java开发制定的规范 项目命名? 项目创建,名称所有字母均小写,组合方式为: com.leadal.$projectName.$component.$hiberarchy。 1.$projectName:项目名称 2.$component:模块名称 3.$hiberarchy:开发层次名称 例如: com.leadal.tims.exchange.dao 类文件夹命名? ?source代码模块 ?config配置文件模块 ?test 测试模块 包命名? ?规则 o全部小写。 o标识符用点号分隔开来。为了使包的名字更易读。如 com.leadal.shanty ?常用几个包名 o dao:数据层 o service:逻辑层 o model:持久类定义包 ?实现Serializable接口,创建serialVersionUID ?主键统一用id标识,Long类型 o web:表示层及控制层 o enums:枚举类型 o config:配置文件类包 o resource:资源文件包 类文件命名?

?尽量以英文进行类定义 ?所有类都以大写字母开头 ?组合词每个词以大写字母开头,不用下划线或其他符号 ?避免使用单词的缩写,除非它的缩写已经广为人知,如HTTP 变量命名? ?第一个字母小写,中间单词的第一个字母大写 ?不用_或&作为第一个字母。 ?尽量使用短而且具有意义的单词 ?单字符的变量名一般只用于生命期非常短暂的变量。i,j,k,m,n一般用于integers;c,d,e一般用于characters ?如果变量是集合,则变量名应用复数。 String myName; int[] students; int i; int n; char c; btNew; (bt是Button的缩写) 常量命名? ?所有常量名均全部大写,单词间以‘_’隔开 int MAX_NUM; 方法命名规则? ?规则 o第一个单词一般是动词。 o第一个字母是小些,但是中间单词的第一个字母是大写。

java开发规范文档

一千零一夜产品部系统开发规范V1.0 一千零一夜途遇科技有限公司 2015-11-03

修改记录 目录 1前言 (4) 2开发管理 (4) 3项目周期 (4) 4命名规范 (5) 4.1项目编号命名规范 (5) 4.2文档命名规范 (5) 4.3路径管理 (5) 4.4jsp/html命名规范 (6) 4.5数据库命名规范 (8) 4.5.1表名规范 (8) 4.5.2字段规范 (8) 5文档规范 (8) 6代码规范 (9) 6.1Java源代码规范 (9) 6.1.1命名 (9) 6.1.2代码格式 (11) 6.1.3注释 (12) 6.1.4其他 (13) 6.2jsp/html代码规范 (13) 6.3数据库开发规范 (15) 6.3.1主键 (15) 6.3.2日期类型 (16) 6.3.3固定字段 (16) 6.3.4取值规范 (16) 6.3.5数据库开发工具 (16)

6.3.6Sql书写规范 (17) 6.4其他规范 (17) 7实战代码规范 (18) 7.1Java源代码规范 (18) 7.1.1java代码命名与格式 (18) 7.2jsp/html代码规范 (26) 8FAQ (29) 8.1Logic类中新增数据方法怎么写 (29) 8.2Logic类中修改数据方法怎么写 (30) 8.3Logic类中删除数据方法怎么写 (31) 8.4怎样创建一个没有底部按钮的窗口 (32) 8.5怎样设置弹出窗口的标题 (32) 8.6怎样重写提交数据的方法 (33) 8.7怎样创建单grid的页面 (33) 8.8怎样多个页签的grid的页面 (34) 8.9怎样创建左边树右边grid的页面 (34) 9代码检查规定 (34) 10附录1:JPA使用指南javax.persistence的注解配置 (34)

Java编码规范(命名规则).

1. Java 命名约定 除了以下几个特例之外,命名时应始终采用完整的英文描述符。此外,一般应采用小写字母,但类名、接口名以及任何非初始单词的第一个字母要大写。 1.1一般概念 n 尽量使用完整的英文描述符 n 采用适用于相关领域的术语 n 采用大小写混合使名字可读 n 尽量少用缩写,但如果用了,要明智地使用,且在整个工程中统一 n 避免使用长的名字(小于 15个字母是个好主意 n 避免使用类似的名字,或者仅仅是大小写不同的名字 n 避免使用下划线(除静态常量等 1.2示范 包(Package采用完整的英文描述符,应该都是由小写字母组成。对于全局包,将你的 Internet 域名反转并接上包名。 j ava.aw t,com.ambysof t.www.persistence 类(Class采用完整的英文描述符,所有单词的第一个字母大写。 Customer, SavingsAccount 接口(Interface采用完整的英文描述符说明接口封装,所有单词的第一个字母大写。习惯上,名字后面加上后缀 able, ible 或者 er,但这不是必需的。Contactable,Prompter 组件/部件(Component使用完整的英文描述来说明组件的用途,末端应接上组件类型。 okButton, customerList,f ileMenu 异常(Exception通常采用字母 e 表示异常。 e

类变量字段采用完整的英文描述,第一个字母小写,任何中间单词的首字母大写。 firstName, lastName 实参/参数同字段/属性的命名规则 public void setFirstName(String firstName{ this.firstName = f irstName;} 局部变量同字段/属性的命名规则 获取成员函数被访问字段名的前面加上前缀 get。 getFirstName(, getLastName( 布尔型的获取成员函数所有的布尔型获取函数必须用单词 is做前缀。isPersistent(, isString( 设置成员函数被访问字段名的前面加上前缀 set。 setFirstName(, setLastName(,setWarpSpeed( 普通成员函数采用完整的英文描述说明成员函数功能,第一个单词尽可能采用一个生动的动词,第一个字母小写。 openFile(, add Account( 静态常量字段(static final全部采用大写字母,单词之间用下划线分隔。 MIN_B ALANCE, DEF AULT_DATE 循环计数器通常采用字母 i,j,k 或者 counter 都可以接受。 i, j, k, counter 数组数组应该总是用下面的方式来命名:obj ectType[]。 byte[] buff er; 2. Java 注释约定 一个很好的可遵循的有关注释的经验法则是:问问你自己,你如果从未见过这段代码,要在合理的时间内有效地明白这段代码,你需要哪些信息。 2.1. 一般概念 n 注释应该增加代码的清晰度

相关文档
最新文档