Android开发规范示范——开发必学

之前从在工作室接触工作项目开发至今,由于需要协同队友一起进行项目开发,规范编程是协同开发的基础。有时队友A写了一个类或者修改了某个类的一些成员属性或者方法,如果按照其惯有的编程风格,编写出来的代码别人也看不懂。这里拿本人开发过程中的规范实例,仅供参考。

工具及开放环境

开发工具统一使用eclispe集成Android SDK作为开发工具,工作区的编码格式使用UTF-8,ADT实时更新最新本。

Java版本统一使用JDK版本为1.7。

命名规范

(package):采用完整的英文描述符,由小写字母组成;对于全局包,将Internet域名反转换上包名

例如:

表示包下所有类只用来存放常量

com.gdut.topview.constant   

表示包下所有类只用来存放自定义控件

com.gdut.topview.widget 

表示包下所有类只用get和set方法来控制对象

com.gdut.topview.entity 
存放所有用到的Activity

com.gdut.topview.activity  

存放工具类

com.gdut.topview.util   

(class)/接口/抽象类:采用完整的英文描述符,所有单词第一个字母大写,采用驼峰式命名。

例如:

class Test<span style="white-space:pre">	</span>//类
interface Test<span style="white-space:pre">	</span>//接口
abstract class Test<span style="white-space:pre">	</span>//抽象类

注意一下几种:

Android基本集成类:功能名组成+ 以Android类名
例如:
ShowActivity<span style="white-space:pre">	</span>//Activity
DownloadService<span style="white-space:pre">	</span>//Service
DeleteReceiver<span style="white-space:pre">	</span>
MyApplication
有共性的类使用相同的开始单词或者前缀

例如:

class WIFIEvent 
class WIFICookie

成员函数(method):采用完成的英文描述符,函数名字以代表函数功能的英文单词组成,除首单词小写,其他单词首字母大写;一般的,函数第一个单词要求用动词;Getter函数加前缀‘get’;Setter函数加前缀‘set’;boolean型函数用‘is’作为前缀;函数参数用‘a’作为前缀;不要在方法名中加入对象名称。

例如:

void exportHtmlSource() //Not exportHTMLSource
getFirstName()
setFirstName()
isRigth()
Boolean isDrawable(Path apath)
Line.getLength()  //Not Line.getLineLength()

变量:采用完整的英语描述符,变量名称用描述变量用途的一个或多个英文单词组成,除首单词用小写,其余单词首字母大写。
成员变量用‘m’作为前缀。

例如:

public String mStrPageURL

静态成员变量用‘s’作为前缀。

例如:

public static String sSrtAddress;

常量的名字全部大写,单词之间用‘_’分开。

例如:

public final static short ERROR_COMM = 1;

枚举变量用‘em’作为前缀。

例如:

emSelector

Boolean类型变量使用‘is’作为前缀,不能使用否定词。

例如:

boolean isError      // NOT isNoError
Boolean isFound      //NOT isNotFound

形参用‘a’作为前缀。

例如:

(Person aPerson)

数组变量应在‘[]’之后。

例如:

byte[] buffer   //NOT byte buffer[]

用复数命名集合类型的变量

例如:

Collection<Point>points
Int []           values

Iterator类型变量用it命名

例如:

Iterator it = points.iterator()

基本数据类型命名规范

Integerint+描述          Charchr+描述          Booleanbln+描述 

Longlng+描述           Shortshr +描述         Doubledbl+描述

Stringstr+描述           Floatflt+描述          Singlesng+描述

DataTimedt+描述         Arrayarr+描述        Objectobj+描述     

例如:String  srtName;

基本控件命名规范

TextView:tv_+描述            Button :btn _+描述            EditText :et_+描述

WebView :wv_+描述            ImageView:iv _+描述            VideoView :vv _+描述

MediaController :mc_+描述             ListView :lv _+描述            GridView :gv _+描述

Gallery :gly _+描述            ImageButton: ib _+描述            CheckBox :cb _+描述

RadioButton: rb _+描述            SeekBar: sb _+描述            ProgressBar pb _+描述

Spinner :spr _+描述            SearchView: sv _+描述            DatePicker :dp_+描述

AnalogClock: ac _+描述            TimePicker:tp _+描述

例如:

private Button mBtn_show;
private Static String sStrName;

缩进折行

  • 函数或者过程的开始,结构的定义,循环、判断语句中的代码都要采用缩进风格,统一用Tab键进行缩进代码
  • 每一行代码都不要超过100个字符
  • 一对花括号之间必须折行
  • ifforwhile的主体即使只有一行,也要用花括号包括
  • 如果一个表达式或者语句无法在一行中写完:在逗号之后折行;在运算符之前折行;尽量让同级表达式处在同一行

例子:

function (longExpression1, longExpression2, longExpression3,
longExpression4, longExpression5);
   //NOT longName1 = longName2 * (longName3 + longName4
- longName5) + 4 * longname6;

空格空行

  • 空格使用:逗号前面空一格空格;所有运算符(“.”“++”“—”除外)、赋值符号前后必须空一格;行尾不能有空格
  • 空行使用:
  1. packageimport之间要空一行
  2. import组之间要空一行
  3. import语句与类、接口声明之间空一行
  4. 实例变量定义与方法定义之间空一行
  5. 方法与方法之间空一行
  6. 代码块之间空一行
  7. 文件结尾后空一行
  8. 超过15行代码考虑用空行分割,否则有阅读困难
  9. 除非有特殊考虑,不要有一行以上空行

代码注释

文件头范例
例如:

/**
*  Copyright<year> topviewAndroid  Inc.
*/

/接口范例 (必须注明类/接口的编写目的、用途)
例如:

/**
*  类或接口的作用描述
*  @author XXX<email>
* @version xxxx-xx-xx.a(xxxx-xx-xx为年月日 a为第几次修改
*/

方法头范例
  • 说明方法的作用
  • 说明方法的参数
  • 说明方法的返回值
  • 说明方法抛出的异常

例如:

/**
*  方法的描述
*  @param 参数的描述
*  @return 返回类型的描述
*  @exception 异常信息的描述
*/

/**
* Return lateral location of the specified position.
* If the position is unset, NaN is returned.
*
* @param x X coordinate of position.
* @param y Y coordinate of position.
* @param zone Zone of position.
* @return Lateral location.
* @throws IllegalArgumentException If zone is <= 0.
*/
public double computeLocation(double x, double y, int zone)
throws IllegalArgumentException {
...
}

方法体范例
  • 控制流结构说明
  • 变量说明
  • 复杂代码说明
  • 处理顺序说明

Public void example(){
   //使用双斜杠进行注释
}

资源文件

xml布局文件命名

这类文件划分为两类,一类是直接或间接被某个组件加载,一类是资源定义,比如selector等等。

如果是第一类:加载组件名_功能描述.xml

例如:

mainactivity_show.xml

如果是第二类("oo"只是一个标志,用于区分而已,可以根据自己的开放实际情况而定):oo_类型_功能描述.xml

例如:

oo_selector_buttonchange.xml

xml布局id命名

所在xml布局名_基本控件命名规范

例如在mainactivity_show.xml中的一个显示结果的一个textView

android:id="@+id/maiinactivity_show_tv_showresult"

更多补充将会持续更新...




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值