`
80demon
  • 浏览: 72554 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android编程风格

 
阅读更多

基本规范

异常

1, 尽量不要使用try catch捕获异常,而是显式的抛出一个异常。
2, 使用try catch一定要在catch语句中做好相应的处理,不能留空。
3, 不要捕获Exception类型的异常

Java代码:
 
 privatefinalHandlermAttachmentEditorHandler=newHandler(){
  
  @Override
  publicvoidhandleMessage(Messagemsg){
  
  switch(msg.what){
  
  caseAttachmentEditor.MSG_EDIT_SLIDESHOW:{
  
  try{//'''不要使用trycatch'''
  
  editSlideshow();
  
  }catch(Exceptione){//不要在这里捕获基类Exception
  
  //这里留空非常危险,一旦出错,根本找不到
  
  }
  
  break;
  
  }
  
  caseAttachmentEditor.MSG_SEND_SLIDESHOW:{
  
  
  if(isPreparedForSending()){
  
  ComposeMessageActivity.this.confirmSendMessageIfNeeded();
  }
  
  break;
  }


为什么不要使用try catch?

我们应该对于如何划分异常的层次有一个理解,对于完全已知的错误,结合逻辑编写处理这种错误的代码,自己无法处理的,继续向上抛出,增加程序的鲁棒性,但是如果你根本不确定报出什么异常,请不要这样做。

为什么要声明方法抛出异常?
方法是否抛出异常与方法返回值的类型一样重要。假设方法抛出异常确没有声明该方法将抛出异常,那么客户程序员可以调用这个方法而且不用编写处理异常的代码。那么,一旦出现异常,那么这个异常就没有合适的异常控制器来解决。
为什么不要捕获Exception类异常?

Exception
分为两类:unchecked(RuntimeException 和 error) & checked,因为RuntimeException这种由于程序本身错误导致的异常,是程序员的问题。你catchException,意味着子类RuntimeException也被catch了。

在catch中可以做什么?

1,赋默认值
2,做一些错误处理
3,抛出一个自己封装的异常类对象

在catch中不可以做什么?

1,抛出一个RuntimeException。(除非你认为你的程序除了崩掉重启别无他法,否则别这么做)

finally

finally
这个关键字很不好用,因为我们根本无法确定什么时候他会执行,是return之前还是之后?没人知道。除非你要对外部资源进行一些收尾,比如使用InputStream,你要close。否则,不要用它。

引入

1,引用顺序:android,三方按字母表,java(x) (这是一个graceful的问题)
2,引用方式:一定要引全类名,不要引用整个包。

Java代码:
 
 importsfoo.Bar;//right
  
  importsfoo.*;//wron


注释

新加代码要求如下:

1,CopyRight Statement,声明结束后空一行写代码(非必须)
2,每个类都要有描述注释
3,方法一定要写注释描述功能,参数,返回值,重要的变量要有注修改源码要求如下:

解释修改原因

Java代码:

  /*
  
  *Copyright(C)2010TheAndroidOpenSourceProject
  
  *LicensedundertheApacheLicense,Version2.0(the"License");
  
  *youmaynotusethisfileexceptincompliancewiththeLicense.
  
  *YoumayobtainacopyoftheLicenseat
  
  *
  
  *http://www.apache.org/licenses/LICENSE-2.0
  
  *Unlessrequiredbyapplicablelaworagreedtoinwriting,software
  
  *distributedundertheLicenseisdistributedonan"ASIS"BASIS,
  
  *WITHOUTWARRANTIESORCONDITIONSOFANYKIND,eitherexpressorimplied.
  
  *SeetheLicenseforthespecificlanguagegoverningpermissionsand
  
  *limitationsundertheLicense.
  
  */
  
  
  packageeoe.android.internal.foo;
  
  importandroid.os.Blah;
  
  importandroid.view.Yada;
  
  importjava.sql.ResultSet;
  
  importjava.sql.SQLException;
  
  /**
  
  *DoesXandYandprovidesanabstractionforZ.
  
  *@authorJackyYang
  
  */
  
  publicclassFoo{
  
  ...
  
  }


方法

方法一定要短小精悍,功能专注,不要试图把一个大的功能放在一个方法中实现。

局部变量

局部变量的作用域一定要最小化,即什么时候用,什么时候声明,不要提前声明了很多变量,但是最后才用。

缩进
代码块缩进4字符,不要用tab

Java代码:
  publicvoidpay(){
  
  //这里空了4字符
  
  }

换行缩进8字符,不要用tab

Java代码:
 
 Instrumenti=someLongExpression(that,wouldNotFit,on,one,line)


成员变量

1,静态的变量以s开头
2,非静态,非公开变量以m开头
3,静态常量 全部大写
4,成员变量定义在类的开始,或者在使用成员变量的方法之前声

Java代码
  publicclassMyClass{
  
  publicstaticfinalintSOME_CONSTANT=42;
  
  publicintpublicField;
  
  privatestaticMyClasssSingleton;
  
  intmPackagePrivate;
  
  privateintmPrivate;
  
  protectedintmProtected;


括号 { }


使用规则只有两种:

Java代码:
 
 if(condition){
  
  body();//标准
  
  }
  if(condition)body();//如果只有一条语句,也可以这样


代码行长度

代码行长度不超过100字符

注解

1,注解离方法最近
2,一般不要使用SuppressWarning,要使用的话,请加上TODO注释

Java代码:
 
 //TODO:Thethird-partyclasscom.third.useful.Utility.rotate()needsgenerics
  
  @SuppressWarnings("generic-cast")
  
  List<String>blix=Utility.rotate(blax)


调试规范

Log的使用


1,在调试中,非常鼓励大家使用log查找问题,但是问题结束后,在check in之前,一定要确定你的代码注释已经关闭。
2,Log的级别要视情况而定,不要随便使用Log.e
3,代码要使用规范的TAG和调试开关,方便以后使

Java代码:
  privatestaticfinalbooleanDBG=true;
  
  privatestaticfinalStringTAG="MediaScanner";
  
  if(DBG){
  
  Log.d(TAG,"debuginfo");
  
  }


测试

在正规开发中,一定要有测试的环节,android有自己一套测试的工具

Java代码:
  //标准的testcase
  
  publicclassLaunchTestextendsAndroidTestCase{
  
  testInterceptSendSms(){//格式:testMethod_specificCase1如果没有case,那就直接写testMethod,如果没有具体方法而是测的功能,那就直接写功能名,testCompose
  
  //但是更多的还是方法级的测试
  
  }
  
  //测试Activity
  
  publicclassInterceptSendMmsextendsActivityInstrumentationTestCase2<ComposeMessageActivity>{
  
  testInterceptSendSms(){//格式:testMethod_specificCase1如果没有case,那就直接写testMethod
  
  }
  
  }


分享到:
评论

相关推荐

    android编程风格指南

    android编程风格指南,本文的英文原始文档(Android Code Style Guidelines for Contributors)地址 : http://source.android.com/source/code-style.html

    (我认为的)Android代码风格

    总结到的android编程风格 有不对的希望指正

    Android编程应用风格和主题详解

    本文实例讲述了Android编程应用风格和主题。分享给大家供大家参考,具体如下: 当你设计你的程序的时候,你可以用风格和主题来统一格式化各种屏幕和UI元素。 风格是一个包含一种或者多种格式化属性的集合,你可以将...

    Android代码风格指南

    Android代码风格指南,规范了android编程。

    Android 4游戏编程入门经典

    第1章 android,后起之秀  1.1 android简介  1.2 版本分裂  1.3 谷歌的角色  1.3.1 android开源项目  1.3.2 android market  1.3.3 挑战赛、设备播种计划和谷歌i/o  1.4 android的功能和体系结构  1.4.1 ...

    android_编程规范

    介绍android开发中关键部分的编码规范,便于统一编程风格,利于代码维护。

    android游戏编程入门

    android游戏编程入门 《Android4游戏编程入门经典》是2012年清华大学出版社出版的图书,作者是(美)策希纳(Zechner,M.),无(美)格林(Green,R.)。 第1章 Android,后起之秀 1  1.1 Android简介 1  1.2 版本分裂 3 ...

    最全面的 Android 编码规范指南.docx

    这份文档参考了 Google Java 编程风格规范和 Google 官方 Android 编码风格规范。该文档仅供参考,只要形成一个统一的风格,见量知其意就可。

    Android编程开发之EditText中inputType属性小结

    本文总结分析了Android编程开发之EditText中inputType属性。分享给大家供大家参考,具体如下: android 1.5以后添加了软件虚拟键盘的功能,所以在输入提示中将会有对应的软键盘模式。 android中inputType属性在...

    Android数据库应用编程——为企业开发数据驱动Android应用

    Android数据库应用编程——为企业开发数据驱动Android应用 透彻讲述如何使用内容提供器共享数据、使用适配器显示数据以及使用Web服务传输数据,介绍集成应用程序和现有企业系统、保护数据以及同步数据的方法。...

    Android编程使用android-support-design实现MD风格对话框功能示例

    主要介绍了Android编程使用android-support-design实现MD风格对话框功能,涉及Android对话框、视图、布局相关操作技巧,需要的朋友可以参考下

    android版自定义文件浏览器

    自学Android编程有段时间了,自己写了个Android文件浏览器。因为是从C#转Android,所以代码风格遗留了C#的部分风格,如果有什么问题或者更好的方法,请给作者指出。 功能如下: 1.可以设置为文件浏览器、选择文件、...

    Android实现Windows风格的Dialog源码

    Android实现Windows风格的Dialog源码,是一个很不错的Android源码,有兴趣的伙伴们抽时间可以看一下把。

    Android编程实现自定义PopupMenu样式示例【显示图标与设置RadioButton图标】

    本文实例讲述了Android编程实现自定义PopupMenu样式。分享给大家供大家参考,具体如下: PopupMenu是Android中一个十分轻量级的组件。与PopupWindow相比,PopupMenu的可自定义的能力较小,但使用更加方便。 先上效果...

    Android编程自定义扁平化对话框示例

    本文实例讲述了Android编程自定义扁平化对话框。分享给大家供大家参考,具体如下: 平时我们开发的大多数的Android、iOS的APP,它们的风格都是拟物化设计。如Android 4.X、iOS 7、WP8采用的是扁平化设计,可以看出...

    Android开发规范

    Android内部开发规范,编码规范 目录 1 介绍 5 1.1 目的 5 1.2 术语和定义 5 2 文件组织 5 2.1 JAVA包和源文件 5 2.1.1 开头注释 5 2.1.2 包和引入语句 6 2.1.3 类和接口声明 6 3 缩进排版 7 3.1 行长度 7 3.2 括号 ...

    深入Android应用开发 核心技术解析与最佳实践

    第9章全面介绍了Android的多媒体编程,包括音频、视频和Camera服务等,并对TTS的实现进行了剖析;第10章详细讲解了Android的跨语言调用;第11章深入剖析了Android的安全框架和安全机制;第12章针对商业应用的需要...

Global site tag (gtag.js) - Google Analytics