android 代码规范_第1页
android 代码规范_第2页
android 代码规范_第3页
android 代码规范_第4页
android 代码规范_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Android(java)编码规范版本日期说明V1.0V1.12015.01.31确定资源文件命名规范命名规范源代码命名标识符命名规则示例包全部用小写字母,以ject开头,common为机构名,公共库则跟以库的功能英文缩写。建议各个项目以MVC模式区分包的功能。ject.ui.*;ject.model.*;ject.controller.*;类名词,每个单词手写字母大写,类名要使用完整单词,避免使用缩写(除该词被广泛使用外,如URL,HTML)。class ImageLoader;class GestureDetector;接口跟类名一致

2、,以*able, *ible,*er为后缀。interface Dragable;方法动词,第一个单词小写,从第二个单词起每个单词首字母大写。void start();void startLoad(); 常量全部字符大写,以下划线形式连接单词public static final int MAX_WIDTH = 100;静态成员变量以s开头,其他与局部变量一致private static MyClass sSingleton;非公有,非静态成员变量首字符为mprivate int mPrivate;公有变量第一个单词小写,从第二个单词起每个单词首字符大写public int publicFie

3、ld;局部变量/参数第一个单词小写,从第二单词起每个单词首字符大写float myWidth;资源文件命名类别命名规则示例layout(片段)功能功能_控件browser_link_context_headerselect_dialog_multichoice Activity->对应layoutApiDemoActivity:功能Layout:功能NoteEditor->note_editor.xmlXXXActivity->xxx.xml drawableic_功能ic_控件_功能功能_状态view(缩写)_功能_状态建议view的缩写统一为: Linearlayout:

4、llRelativelayout:rlTextView:tv ImageView:ivImageButton:ibButton:btnAnimation:animic_input_addic_dialog_alertpresence_offlinebtn_star_big_on(/off)多状态的drawable(无参考)view(缩写)_功能_selectorbtn_goods_selector.xml自定义动画(layout_)描述slide_inlayout_grid_inverse_fade字符串资源 功能 组件_功能 Ps:建议所有的中文字符串都写在xml中,以免出现乱码cancel

5、 search_gopersonal_titlelayout中的id->activity中view命名view缩写_功能btn_start_search->mBtnStartSearch 或者mStartSearchBtn 或者mStartSearchButton color通用颜色功能或应用场景为通用性和版本迭代考虑,不要在具体的功能或者场景前面加bg_,以及后面加上具体颜色描述,颜色很可能会改变的lightyelloworder_unchoose_tv_namebg_column_source_textcolor_grayPs:所有的资源命名不要使用美元符号等特殊字符源文件组织

6、采用以下顺序组织文件:文件头注释包、import 语句类和接口的声明文件头注释所有的文件需要有一个C风格的注释包括 类名,版本信息, 时间, 版权声明等.示例:/* * (#)Blah.java 1.82 99/03/18 * * Copyright (c) 1994-1999 Sun Microsystems, Inc. * . */ 包、import 语句文件头注释后边空一行, 首先是包声明, 随后空一行是import语句, import语句的顺序按以下顺序(与android.importorder中对应):Android imports第三方库(com、junit、net、org)jav

7、a和javaxAndroid提供了android.importorder文件,可以导入Eclipse, 随后使用快捷键 Ctrl(Mac下是苹果键)+Shift+O进行排序。在imports使用通配符当你想使用foo包中的Bar类,这有两种可能的方式导入它:import foo.*;import foo.Bar;1的优点 :大大减少了import声明的数目。2的优点 :很明显的看到哪些类实际在用,对于维护者而言,代码更具有可读性。建议 :使用样式2 import 所有的Android代码。一个明确的例外是用于Java标准库(使用java.util .*,java.io. *,等等)和单元测试代

8、码(junit.framework .*)。类/接口定义下表按顺序给出了类和接口定义的规范, 类的内容按以下顺序进行定义类/接口声明说明类或接口的文档注释/*.*/ 类或接口的声明 类或接口的实现注释/*.*/在类或接口文档注释中不合适出现的内容写在这里静态变量1) public 2) protected 3)package level 4) private实例变量顺序同上构造方法 方法按照方法的功能而不是访问权限进行分组,协作完成某一功能的几个方法写在相邻位置Ps:方法规模为了把规模控制在合理范围内,方法应该保持简短和重点突出。不过,有时较长的方法也是合适的,所以对方法的代码长度并没有硬性的

9、限制。如果方法代码超过了40行,就该考虑是否可以在不损害程序结构的前提下进行分拆。在标准的位置定义字段字段应该定义在文件开头,或者紧挨着使用这些字段的方法之前。除非理由十分充分,否则循环变量都应该在for语句内进行声明:for (int i = 0; i n; i+)     doSomething(i);排版和断行Android提供了格式文件android-formatting.xml和android.importorder.可以在Eclipse中导入,使Eclipse自动按照相应的风格进行代码排版。导入方式:Select Window > Prefere

10、nces > Java > Code Style. Use Formatter > Import to import android-formatting.xml.Organize Imports > Import to import android.importorder.自动排版: shift+ctrl(Mac下为苹果键)+f自动对import排序:shift+Ctrl(Mac下为苹果键)+O行长度每行代码的长度应该不超过200个字符。缩进每一级缩进采用4个空格字符,不要使用Tab键。注: Eclipse可以设置Tab键用4个空格字符进行替换: Window(Mac

11、下为Eclipse)->Preferences->General->Editors->Text Editors-> Insert spaces for tabs断行在逗号后断行在操作符前断行有很多操作符则在优先级较高的操作符之前断行新行与前一行相同逻辑层次的表达式对齐如果第四条规则会导致代码逻辑混淆或者前一行同一逻辑层次的代码比较靠右,则可以使用8个空格替代。条件语句(if, while 后边括号中的条件)采用8个字符的缩进(4个字符的缩进可能会与if之后的执行语句造成混淆) 例如:/CONVENTIONAL INDENTATIONsomeMethod(int a

12、nArg, Object anotherArg, String yetAnotherArg, Object andStillAnother) . /INDENT 8 SPACES TO AVOID VERY DEEP INDENTSprivate static synchronized horkingLongMethodName(int anArg, Object anotherArg, String yetAnotherArg, Object andStillAnother) ./DON'T USE THIS INDENTATIONif (condition1 &&

13、condition2) | (condition3 && condition4) |!(condition5 && condition6) /BAD WRAPS doSomethingAboutIt(); /MAKE THIS LINE EASY TO MISS /USE THIS INDENTATION INSTEADif (condition1 && condition2) | (condition3 && condition4) |!(condition5 && condition6) doSomething

14、AboutIt();其他1) 大括号: 大括号不单独占一行,而是与其前面的语句在同一行2) 条件语句之后必须用大括号将该条件需要执行的所有语句括起来,即使执行语句只有一行,以避免随后可能对这一段代码添加语句忘记添加括号的情况出现。(if, for, while)例如:if (condition) dosomething();而不应该if (condition) dosomething();3) 适当的空行: 方法定义之间加空行,方法内部逻辑上关联不是特别紧密的块儿之间加空行。例如:void myMethod() int int1 = 0; / beginning of method block

15、 if (condition) int int2 = 0; / beginning of "if" block . 4) 每一个语句单独占一行(循环除外) argv+; / Correct argc-; / Correctargv+; argc-; / AVOID!注释语言建议采用中文注释,源文件/工程编码格式设置为utf-8以防止乱码出现。何时使用注释有两种注释,一种是文档注释,另一种是实现注释。文档注释是用来给使用者参考的文档,可以使用javadoc工具生成html文件,是从实现无关的角度来描述代码的功能; 实现注释是为了注释掉无用的临时代码、注释特殊的代码实现。所有的

16、注释是用来给出代码的概览,提供代码外的额外信息的,以利于读代码和理解代码。 而不是重复代码已经能说明的内容 ,如果仅仅是重复代码或者函数名,则注释可以不要。例如下边的例子,注释不要写。/Return the widthint getWidth()/注:如果是注释写的很长很频繁通常意味着代码的设计有问题,在实现过程中,能用代码说明的就不要写注释。TODO注释当一段代码是临时的或者不完美的解决方案时使用TODO注释。如果TODO注释的内容是:“在将来某天做某事”则指明具体一天或者某个确切的事件(所有测试完毕,即将提交应用)XXX和FIXME注释XXX: 代码勉强工作,只是有效率问题FIXME: 代

17、码不能正常工作,需要修复注解使用标准的Java注解, 每一个注解使用一行。Deprecated:仅当方法不再推荐使用时使用此注解,使用此注解时必须在Javadoc标签中使用 deprecated 并指定替代的实现。即使这一方法标识为Deprecated,应当仍然可以正确工作。Override : 当方法是覆盖或者实现父类的方法时使用此标签*SuppresWarnings: 当且仅当一个警告不能被剔除时才可以并必须使用这个注解,以反映代码中存在的问题,当这个标签被使用时,必须有一个 TODO 注释来解释警告被剔除的条件。使用这一标签时,代码需要被重构以将这一问题与软件其他部分进行隔离。Javad

18、oc标签 下面解释几个简单常用的注释标签,其他参见: HYPERLINK "标签说明标签类型author作者标识包,类,接口version版本号包,类,接口param 参数名 描述方法的参数构造方法,方法return 描述对函数返回值的描述方法deprecated 过期文本标识随着版本的提示,当前API已经过期,仅为保持兼容性依然存在,以此警告开发者不应再使用这个API包,类,接口,值域,构造方法,方法throws 异常类名构造函数或者方法所会抛出的异常构造函数,方法see 引用查看相关内容,如类、方法、变量等包,类,接口,值域,构造函数,方法since 描述文本API什么版本后开始

19、支持包,类,接口,值域,构造函数,方法link包.类#成员 标签链接到某个特点的成员对应的文档中包,类,接口,值域,构造函数,方法声明1) 每行声明一个变量,在类型和标识符之间用一个空格分隔。2) 尽可能在变量声明时进行初始化。3) 仅在一个段(大括号对)的开始进行变量初始化(for 循环初始化除外)4) 不要定义与更广作用域(类变量)同名的局部变量5) 尽量在变量实际要使用时再进行声明6) 函数名和 “(” 之间没有空格7) “”出现在行尾,“”出现在行首且单独一行8) 空函数可以在“”后紧跟“”与函数在统一行异常处理任何时候不能忽略异常, 如下情况是不允许的:void setServerPort(String value) try serverPort

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论