一、异常

1.不要忽视异常处理

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

错误的做法:

            
  1. voidsetServerPort(Stringvalue){
  2. try{
  3. serverPort=Integer.parseInt(value);
  4. }catch(NumberFormatExceptione){
  5. }
  6. }

正确的做法(1):

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

            
  1. voidsetServerPort(Stringvalue)throwsNumberFormatException{
  2. serverPort=Integer.parseInt(value);
  3. }

正确的做法(2):

            
  1. /**Setport.Ifvalueisnotavalidnumber,80issubstituted.*/
  2. voidsetServerPort(Stringvalue){
  3. try{
  4. serverPort=Integer.parseInt(value);
  5. }catch(NumberFormatExceptione){
  6. serverPort=80;//defaultportforserver
  7. }

正确的做法(3):

            
  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):

            
  1. voidsetServerPort(Stringvalue)throwsConfigurationException{
  2. try{
  3. serverPort=Integer.parseInt(value);
  4. }catch(NumberFormatExceptione){
  5. thrownewConfigurationException("Port"+value+"isnotvalid.");
  6. }
  7. }

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

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

错误的做法:

            
  1. try{
  2. someComplicatedIOFunction();//maythrowIOException
  3. someComplicatedParsingFunction();//maythrowParsingException
  4. someComplicatedSecurityFunction();//maythrowSecurityException
  5. //phew,madeitalltheway
  6. }catch(Exceptione){//I'lljustcatchallexceptions
  7. handleError();//withonegenerichandler!
  8. }

二、注释/JavaDoc

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

            
  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.开发维护的日志。一个有关于该类/接口的维护记录:时间、作者、摘要。

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

三、在Imports使用通配符的优劣

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

五、域(Field)命名

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

            
  1. publicclassMyClass{
  2. publicstaticfinalintSOME_CONSTANT=42;
  3. publicintpublicField;
  4. privatestaticMyClasssSingleton;
  5. intmPackagePrivate;
  6. privateintmPrivate;
  7. protectedintmProtected;
  8. }

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

七、命名规则

1.包小写。

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

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

class Raster;
class ImageSprite;

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

interface RasterDelegate;
interface Runnable;
interface Accessible;

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

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

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

char c;
int i;
floatmyWidth;

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

customers;
postedMessages;
someCustomers;
someItems;

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

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

写好代码以后对照代码规范一项一项检查一下吧。

(1)Eclipse 代码格式化
你可以导入development/ide/eclipse下的文件,使得Eclipse按照Android代码风格规则。选择 “Window › Preferences › Java › Code Style,使用 “Formatter › Import” ,导入android-formatting.xml,”Organize Imports › Import” 导入 android.importorder.


(2)eclipse tab 设置为4个空格:
Preferences -> General -> Editors -> Text Editors:
Insert spaces for tabs

(3)自动格式化代码Ctrl+Shift+F

(4)全局 查找并替换 Ctrl+F

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


更多相关文章

  1. Debugging of Chrome Android(安卓)WebView
  2. android注解Butterknife的使用及代码分析
  3. Android中对于onMeasure()的理解
  4. Android从底部弹出一个PopupWindow
  5. Android学习笔记——网络技术
  6. Android--SQLite数据库应用技巧分享
  7. Android(安卓)Fragment---管理Fragment
  8. 关于android:configChanges="keyboardHidden|orientation"
  9. android之两种设置全屏或者无标题的方法

随机推荐

  1. wordpress登录失败处理user-lock插件安装
  2. 运维少年系列 python and cisco (1)
  3. 3-11(栈和队列的相互实现)
  4. 运维少年系列 - python and cisco(2)
  5. 10:VMware Horizon View 8.0-证书配置,解决
  6. 运维少年系列 python and cisco (3)
  7. redis高可用集群架构总结
  8. Linux轻量级监控软件-nmon
  9. 今天双十一,给大家送几套视频教程吧
  10. shell 双多分支if条件句语法