java 代码规范

来源:互联网 发布:小米任我行 知乎 编辑:程序博客网 时间:2024/05/16 07:30

1.缩进,软tab

2.避免超长的类和方法。

方法的代码行数不能超过100行(不包含注释),单个类的代码行数不能超过1500。若方法行数超长时,应把其中独立的逻辑块抽取出来作为私有方法。若类的行数超长,应合理考虑重新组织类的结构分出多个类出来。

3.控制每行代码宽度。

每行代码宽度不能超过80个字符(为考虑可阅读性,在不超过80个字符的行也应该考虑切行的情况)

public int method1(...){

    ...

double totalLength = Math.sqrt(Math.pow(x, 2.0),

                                         Math.pow(y,2.0)); 

...

}

关键字和(、)、{、}之间要加一个空格

4. 双操作符,除"."操作符外,其余都需要在操作符前后跟空格。

5.各独立的逻辑块需要添加一空行分割。

1.类或接口中的各成员都需要添加一个空行分割。

1.类与接口文件中的文件注释后面需要添加一空行分割。

6.名称不能过长,这里规定,名称的长度最长不能超过30个字符,建议在25个字符以内。

7.含有全大写单词(缩写)的命名,我们按照头字母大写,后面字母全小写的规则处理。例如:loadXMLDocument-->loadXmlDocumnet

8.禁止使用拼音等一切非英文或者非英文单词用作命名

9.不要使用数字命名。在“2”代表“to”,“4”代表“for”的时候除外。

10.包命名请使用小写字母,尽量使用单个单词,同时尽量避免长名及非惯用缩写。

11.类的命名,非特殊情况,使用名词,且与文件名完全匹配,内部类除外。

12.接口使用名词或形容词。(若为名词,名称前面加大写I)。

public interface IActionListener {

    public void actionPerformed(ActionEvent e);

}

public interface Runnable {

    public void run();

}

public interface Accessible {

    public Context getContext();

}

12.方法名首字母小写。接口、类名首字母大写。

13.方法名称使用动词或动宾结构。

参数名称需与属性一致的情况

当构造函数或setter方法中的参数目的是为相关属性赋值时,参数名称要与属性名称一致。

例如:

class Dude {

//一直觉得写这个规范的人有深意,dude,哈哈   

private String name;

    public Dude(String name) {

        this.name = name;

}

    public setName(String name) {

        this.name = name;

}

}

14.常量的所有字母使用大写字母,各单词之间使用下划线“_”隔开。

15.if语句总是用"{"和"}"括起来,就算if语句下只有一条表达式。左花括号{不用另启一行。while、do-while、for同理。switch的各个case是要有空行的(break也要新行)。

16.文档注释一般使用范围是:

          类、接口、接口方法、public、protected、package、私有成员变量都是用文档注释类型进行注释。

         在类、接口定义之前当对其进行注释,包括类、接口的目的、作用、功能、示例程序等。 (类的功能描述往往容易疏漏,很多描述只有一个中文名字,然后就没有然后了...)

例如:

/** 

字符串实用类

    定义字符串操作时所需要用到的方法,如转换中文、HTML标记处理等。 

* @author 罗伟彬 

* @version v1.0.0 

*/ 

public class StringUtil { 

...

}

17.注释需要明确该方法功能、作用、各参数含义以及返回值等。参数注释时当注明其取值范围返回值当注释出失败、错误、异常时的返回情况异常当注释出什么情况、什么时候、什么条件下会引发什么样的异常)。

由于接口方法已经有完整的注释,因此实现类相关的实现方法不需要添加方法注释。(容易出现缺乏功能相关描述,只出现一个中文名字的问题)

/** 

执行查询。 

    该方法调用StatementexecuteQuery(sql)方法并返回ResultSet结果集。 

* @param sql 标准的SQL语句 

* @return ResultSet结果集,若查询失败则返回null 

* @throws SQLException 当查询数据库时可能引发此异常 

*/ 

public ResultSet executeQuery(String sql) throws SQLException 

    ...

18.深层嵌套的注释

当出现超过三层或以上的嵌套,请在结束花括号好添加单行注释。

例如:

for (i...) {

    for (j...) {

        while (...) {

            if (...) {

                switch (...) {

                    ...

                } // end switch

            } // end if

        } // end while

    } // end for j

} // end for i

19.尽量限制成员函数的可见性。如果成员函数没必要公有 (public),就定义为保护 (protected);没必要保护 (protected),就定义为私有 (private)。 

接口类中的方法默认是public,不需要添加修饰符。

20.异常。必须抛出 最明确,最有意义的异常(继承体系最底层的),例如文件不存在就抛出FileNotExistException。不允许直接抛出java.lang.ExceptionRuntimeException

l 将一种异常转换成另一种异常时必须保留stack trace信息。


原创粉丝点击