Android项目编码规范

  • 格式:doc
  • 大小:52.50 KB
  • 文档页数:6

Android项目编码规范 命名规范 命名规范使程序更易读,从而更易于理解。它们也可以提供一些有关标识符功能的信息,以助于理解代码,不论它是一个常量、包、还是类。 需要注意的是: 1.使用完整的英文描述来命名 2.避免命名超长(15 个字符以内比较好) 3.避免相似的命名。例如:persistentObj 和persistentObjs 不要一起使用;anSqlStmt 和anSQLStmt 不要一起使用 4.慎用缩写,如果要用到缩写,请参考下一条 5.按照缩写规则使用缩写。例如:No.代表number 数字,ID.代表identification标示。

标识符类型 命名规则 例子

包(Packages) 一个唯一包名的前缀总是全部小写的ASCII 字母。所有项目包名以com.chinacache 开头。后面是程序所在项目的英文名称,不含版本号(除非有特别需要与以前版本区分,如:两个版本可能同时运行),再下为子系统的名称,每个子系统内按照类别区分。

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

类(Classes) 命名规则:类名是个一名词,采用大小写混合的方式,每个单词的首字母大写。尽量使你的类名简洁而富于描述。使用完整单词,避免缩写词(除非该缩写词被更广泛使用,像URL,HTML) class Raster;

class ImageSprite;

接口(Interfaces) 命名规则:大小写规则与类名相似,常以 "able"、"ible"结尾。

interface RasterDelegate;

interface Runnable; interface Accessible; 方法(Methods) 方法名是一个动词,采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。 run();

runFast(); getBackground();

变量(Variables) 参数(Parameter) 变量用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。变量名不应以下划线或美元符号开头,尽管这在语法上是允许的。 变量名应简短且富于描述。变量名的选用应该易于记忆,即,能够指出其用途。尽量避免单个字符的变量名,除非是一次性的临时变量。临时变量通常被取名为i,j,k,m 和n,它们一般用于整型;c,d,e,它们一般用于字符型。

char c; int i; float myWidth;

集合(Collection) 数组(Array) 集合变量例如数组、向量,在命名的时候 必须从名字上面体现出该变量为复数、数 组。还可以巧妙的使用some 词头。

customers,orderItems, postedMessages someCustomers,someItems, someMessages

常量(Constants) 常量的声明,应该全部大写,单词间用下 划线隔开。

static final int MIN_WIDTH = 4;

static final int MAX_WIDTH = 999; static final int GET_THE_CPU = 1;

类和接口的声明 1.类和接口声明的各个部分出现的先后次序: 2. 类/接口JavaDoc 注释(/**......*/)。 3.类或接口的声明。 4.类/接口实现的注释(/*......*/),如果有必要的话。该注释应包含任何有关整个类或接口的信息,而这些信息又不适合作为类/接口文档注释。 5.类的(静态)变量。首先是公共(public)变量,随后是保护(protected)变量,再后是包级别的变量(没有访问修饰符的,默认为friendly),最后是私有(private)变量。 6. 实例变量。首先是公共(public)变量,随后是保护(protected)变量,再后是包级别的变量(没有访问修饰符的,默认为friendly),最后是私有(private)变量。 7. 构造函数 8.方法,这些方法应该按功能,而非作用域或访问权限,分组。例如,一个私有的类方法可以置于两个公有的实例方法之间。其目的是为了更便于阅读和理解代码。

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

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

文件命名规范 1.res/layout文件夹命名规范:统一用小写和下划线"_"组合命名,建议xml文件加个前缀以便区分,如对话框的xml配置文 件:dlg_name.xml; 2.res/drawable文件命名规范:统一用小写加下划线“_”组合命名,同上,每个资源文件最好加个前缀以便区分,如:btn_01_default.png,btn_01_pressed.png,btn_01.xml;

单位使用 1.在使用单位时,如果没有特殊情况,一律采用dip和sp(字体大小单位)这两个单位。因为这两个单位是与设备分辨率无关的,能够解决在不同分辨率的设备上显示效果不同的问题。另外,在编码中定义控件的margin或padding属性时,SDK里面并没有提供dip单位的api设置接口,而是提供了默认的px设置。如在下面代码中:

1. Button btn = new Button(context); 2. LayoutParams lp = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); 3. lp.setMargins(0, 0, 0, 0); //这里的单位为px单位 4. btn.setTextSize(12); //这里的单位为sp单位 5. btn.setPadding(0, 0, 0, 0);//这里的单位为px单位 复制代码 这个时候,一般在设置margin和padding时,应该对要设置的px值转换为dip单位,而字体的大小设置中,系统默认给出了sp的单位,所以可以不用进行转换。转换的方法参考下面的代码:

1. /** 2. * 把dip单位转成px单位 3. * @param context context对象 4. * @param dip dip数值 5. * @return 6. */ 7. public static int formatDipToPx(Context context, int dip) { 8. DisplayMetrics dm = new DisplayMetrics(); 9. ((Activity)context).getWindowManager().getDefaultDisplay().getMetrics(dm); 10. return (int) Math.ceil( dip * dm.density); 11. } 复制代码

该方法已在util.UnitUtil类中提供了实现的静态方法,可以直接调用。 源代码范例

1. /* 2. * @(#)Example.java 1.0 2007-4-11 3. * 4. * Copyright (c) 1998-2007 ChinaCache 5. * All rights reserved. 6. * 7. */ 8. package com.chinacache.example; 9. import com.chinacache.example.MyLog; 10. /** 11. * 这里写关于这个类的一些基本功能描述。 12. * 13. * @version 1.0 2010-10-21 14. * @author 郑澍璋 15. */ 16. public class Example extends SomeClass { 17. /* 本类的一些实现细节写这里 */ 18. /** 类变量classVar1 的JavaDoc 说明 */ 19. public static int classVar1; 20. /** 21. * 类变量classVar1 的JavaDoc 说明 22. * 假设这个说明超过了一行 23. */ 24. private static Object classVar2; 25. /** 实例变量instanceVar1 的JavaDoc 说明 */ 26. public Object instanceVar1; 27. /** 实例变量instanceVar2 的JavaDoc 说明 */ 28. protected int instanceVar2; 29. /** 实例变量instanceVar3 的JavaDoc 说明 */ 30. private Object[] instanceVar3; 31. /** 32. * 构造方法的JavaDoc 说明。 33. */ 34. public Example () { 35. // 实现细节 36. } 37. /** 38. * doSomething 方法的JavaDoc 说明. 39. */ 40. public void doSomething() { 41. // 方法实现的细节说明