java编码规范,代码风格指南

修改自:Android 编码规范 | 代码风格指南

一、命名规则

1.小写。

com.chinacache.billing
com.chinacache.billing.node

2.大小写字母混合组成,头字母大写。

class Raster;
class ImageSprite;

3.接口大小写字母混合组成,头字母大写,常以"able""ible"结尾

interface RasterDelegate;
interface Runn
able;
interface Access
ible;

4.方法大小写字母混合组成,第一个单词的首字母小写,其后单词的首字母大写。

run();
runFast();
getBackground();

5.变量、参数小写不推荐使用下划线,简短明晰。

char c;
int i;
float
myWidth;

6.集合、数组应该从命名中体现其复数的含义,例如加后缀s或前缀some

customers;
postedMessage
s;
someCustomers;
someItems;

二、(Field)命名

*非公有,非静态字段命名以m开头。
*
静态域命名以s开头。
*
其他字段以小写字母开头。
* public static final
字段(常量)全部大写,并用下划线连起来。

[java]view plaincopy

1. publicclassMyClass{

2. publicstaticfinalintSOME_CONSTANT=42;

3. publicintpublicField;

4. privatestaticMyClasssSingleton;

5. intmPackagePrivate;

6. privateintmPrivate;

7. protectedintmProtected;

8. }

三、在定义类时,应该按照访问权限的大小分别排列属性和方法。

9. 1. public
2. protected
3.
包级别(没有访问修饰符的,默认为friendly)
4. private

10.

11.

四、注释/JavaDoc

1.顶部版权声明
2.
包和引入块(每一块以空白行分隔)
3.
类或接口的声明。Javadoc注释,描述的类或接口的用途。

[java]view plaincopy

1. /*

2. *Copyright(C)2007TheAndroidOpenSourceProject

3. *

4. *LicensedundertheApacheLicense,Version2.0(the"License");

5. *youmaynotusethisfileexceptincompliancewiththeLicense.

6. *YoumayobtainacopyoftheLicenseat

7. *

8. *http://www.apache.org/licenses/LICENSE-2.0

9. *

10. *Unlessrequiredbyapplicablelaworagreedtoinwriting,software

11. *distributedundertheLicenseisdistributedonan"ASIS"BASIS,

12. *WITHOUTWARRANTIESORCONDITIONSOFANYKIND,eitherexpressorimplied.

13. *SeetheLicenseforthespecificlanguagegoverningpermissionsand

14. *limitationsundertheLicense.

15. */

16. packagecom.android.internal.foo;

17. importandroid.os.Blah;

18. importandroid.view.Yada;

19. importjava.sql.ResultSet;

20. importjava.sql.SQLException;

21. /**

22. *DoesXandYandprovidesanabstractionforZ.

23. */

24. publicclassFoo{

25. ...

26. }

/接口注释的内容1要求写上)
类、接口的文档注释包含如下信息:
1.用途。开发人员使用某个类/接口之前,需要知道采用该类/接口的用途。
2.
如何使用。开发人员需要知道该类/接口应该如何使用,如果必要的话还需要注明不应
该如何使用。
3.
开发维护的日志。一个有关于该类/接口的维护记录:时间、作者、摘要。

方法注释的内容1567要求写上)
1.类该方法是做什么的
2.
该方法如何工作。
3.
代码修改历史纪录。
4.
方法调用代码示范。
5.必须传入什么样的参数给这个方法。@param
6.
异常处理。@throws
7.
这个方法返回什么。@return

五、Imports使用通配符的优劣

六、局部变量应该推迟至使用前声明并初始化

七、花括号没有独自一行,它们与它前面的代码占同一行

八、异常

1.不要忽视异常处理

如果像下面的代码这样,对catch后的异常作空处理,就像埋下地雷一样让人感觉到毛骨悚然:

错误的做法:

[java]view plaincopy

1. voidsetServerPort(Stringvalue){

2. try{

3. serverPort=Integer.parseInt(value);

4. }catch(NumberFormatExceptione){

5. }

6. }

正确的做法(1):

在方法声明时抛出异常,由客户程序员去负责消化这个异常。

[java]view plaincopy

1. voidsetServerPort(Stringvalue)throwsNumberFormatException{

2. serverPort=Integer.parseInt(value);

3. }

正确的做法(2):

[java]view plaincopy

1. /**Setport.Ifvalueisnotavalidnumber,80issubstituted.*/

2. voidsetServerPort(Stringvalue){

3. try{

4. serverPort=Integer.parseInt(value);

5. }catch(NumberFormatExceptione){

6. serverPort=80;//defaultportforserver

7. }

正确的做法(3):

[java]view plaincopy

1. /**Setport.Ifvalueisnotavalidnumber,die.*/

2. voidsetServerPort(Stringvalue){

3. try{

4. serverPort=Integer.parseInt(value);

5. }catch(NumberFormatExceptione){

6. thrownewRuntimeException("port"+value"isinvalid,",e);

7. }

正确的做法(4):

[java]view plaincopy

1. voidsetServerPort(Stringvalue)throwsConfigurationException{

2. try{

3. serverPort=Integer.parseInt(value);

4. }catch(NumberFormatExceptione){

5. thrownewConfigurationException("Port"+value+"isnotvalid.");

6. }

7. }

2、不要偷懒而捕捉一般异常

下面代码一概捕捉Exception异常,大小通吃是不对的,这样会让你在错误出现时难以定位到错误原因,一般异常无法用统一方法进行异常处理。

错误的做法:

[java]view plaincopy

1. try{

2. someComplicatedIOFunction();//maythrowIOException

3. someComplicatedParsingFunction();//maythrowParsingException

4. someComplicatedSecurityFunction();//maythrowSecurityException

5. //phew,madeitalltheway

6. }catch(Exceptione){//I'lljustcatchallexceptions

7. handleError();//withonegenerichandler!

8. }

[参考]
http://source.android.com/source/code-style.html
http://wenku.baidu.com/view/ce17addd5022aaea998f0fad.h


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值