Android项目编码规范

来源:互联网 发布:两大人工智能编程语言 编辑:程序博客网 时间:2024/06/05 11:11

介绍
1. 为什么需要编码规范?

编码规范对于程序员而言尤为重要,有以下几个原因:

 一个软件的生命周期中,80%的花费在于维护
 几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护
 编码规范可以改善软件的可读性,可以让其他程序员尽快而彻底地理解新的代码
 如果你将源码作为产品发布,就需要确任它是否被很好的打包并且清晰无误,一如你已构建的其它任何产品

命名
2. 包命名
命名规则:一个唯一包名的前缀总是全部小写的ASCII 字母并且是一个顶级域名,通常是com,edu,gov,mil,net,org。包名的后续部分根据不同机构各自内部的命名规范而不尽相同。这类命名规范可能以特定目录名的组成来区分部门 (department) ,项目(project),机器(machine),或注册名(login names)。
例如: net.tatans.项目代号.项目名称
App包名:例如: net.tatans.coeus.launcher.
net.tatans.hyperion.social.activities
net.tatans.hyperion.im.activities
net.tatans.hyperion.im.activities 此包中包含:页面用到的Activity类 (activities层级名 用户界面层)
net.tatans.hyperion.social.tools 此包中包含:公共工具方法类 (tools 模块名)
net.tatans.hyperion.social.db 此包中包含:数据库操作类
net.tatans.hyperion.social.custom 此包中包含:自定义的View类等
net.tatans.hyperion.social.service 此包中包含:Service服务
net.tatans.hyperion.social.broadcast 此包中包含:Broadcast服务

  1. 类和接口 命名
    命名规则:类名是个一名词,采用大小写混合的方式,每个单词的首字母大写。尽量使你的类名简洁而富于描述。使用完整单词,避免缩写词(除非该缩写词被更广泛使用,像 URL,HTML)
    接口一般使用able、ible、er 等后缀,并且接口必须以大写I开头
    例如: interface IButton; interface IImageSprite;

activity 类 Activity为后缀标识,如欢迎页面类WelcomeActivity.
Adapter类 Adapter为后缀标识,如商品详情适配器ProductDetailAdapter
解析类 Hlr为后缀标识,如首页解析类HomePosterHlr
公共方法类 Tools或Manager为后缀标识。如:线程池管理类:ThreadPoolManager
日志工具类:LogTools
数据库类 以DBHelper后缀标识。如城市数据库:CityDBHelper
Service类 以Service为后缀标识
BroadcastReceive 以Broadcast为后缀标识
ContentProvider 以Provider为后缀标识

规约:类名必须使用驼峰规则,即首字母必须大写,如果为词组,则每个单词的首字母也必须要大写,类名必须使用名词,或名词词组。要求类名简单,不允许出现无意义的单词(如 class XXXActivity)。
如:class BookMarkAdd  正确
如:class AddBookReadPlanActivity  错误! 应为 class BookReadPlanAdd
4. 方法的命名
命名规则:方法名是一个动词,采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。
例如: public void run(); public String getBookName();

类中常用方法的命名:
1. 类的获取方法(一般具有返回值)一般要求在被访问的字段名前加上get,如
getFirstName(),getLastName()。一般来说,get前缀方法返回的是单个值,find前缀的方法返回的是列表值。
2. 类的设置方法(一般返回类型为void):被访问字段名的前面加上前缀 set,如
setFirstName(),setLastName().
3. 类的布尔型的判断方法一般要求方法名使用单词 is或has 做前缀,如isPersistent(),isString()。或者使用具有逻辑意义的单词,例如equal 或equals。
4. 类的普通方法一般采用完整的英文描述说明成员方法功能,第一个单词尽可能采用动词,首字母小写,如openFile(),addCount()。
5. 构造方法应该用递增的方式写。(参数多的写在后面)。
6. toString()方法:一般情况下,每个类都应该定义toString(),其格式为:
7. initXXX() 初始化相关方法,使用init为前缀标识
8. isXXX() checkXXX() 方法返回值为boolean型的请使用is或check为前缀标识
9. getXXX() 返回某个值的方法,使用get为前缀标识
10. processXXX() 对数据进行处理的方法,尽量使用process为前缀标
11. displayXXX() 弹出提示框和提示信息,使用display为前缀标识
12. saveXXX() 与保存数据相关的,使用sav为e前缀标识
13. resetXXX() 对数据重组的,使用reset前缀标识
14. clearXXX()removeXXX() 清除数据相关的,使用clear或remove为前缀标识
15. drawXXX() 绘制数据或效果相关的,使用draw前缀标识

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

对于SWING以及类变量的命名标志,采取控件的大写的首字母进行小写缩写的格式,例如:
TextView txt
Button btn
ImageButton imgBtn
ImageView imgView
CheckBox chk
RadioButton rdoBtn
analogClock anaClk
DigtalClock dgtClk
DatePicker dtPk
TimePicker tmPk
toggleButton tglBtn
EditText edtTxt
ProgressBar proBar proBar
SeekBar skBar
AutoCompleteTextView autoTxt
ZoomControls zmCtl
Include ind
VideoView vdoVi
WdbView webVi
RantingBar ratBar
Tab tab
Spinner spn
Chronometer cmt
ScollView sclVi
TextSwitch txtSwt
ImageSwitch imgSwt
listView lVi
ExpandableList epdLt
MapView mapVi

JFrame jfMain; //jf
JButton jbOk; //jb
JLable jlUserName; //jl
JTree jtTree; //jt
DefaultMutableTreeNode dmtn MyNode; //dmtn
ImageIcon iiMyPic; //ii
Image imgMyPic; //img
Icon icoMyPic; //ico
URL urlLoginPic; //url
Container conMainFrame; //con
对于ArrayList 、 HashTable 采用首字母缩写标志_ + 变量自身类型标志+变量名
ArrayList->al_ HashTable->ht_
例如:
ArrayList al_jbSeat=new ArrayList();
al_ 代表 ArrayList
jb 代表 JButton
Seat 代表变量名

常规变量:

nTemp:临时通用变量
nResult:接收返回的结果
nCount:统计总数

变量的作用域及前缀
前缀 说明 举例
_ 类成员变量(字段) _optFlag
s_ 静态变量 s_nAge 静态整数
arr_ 数组 arr_nCount[]
al_ ArrayList al_nFlag
ht_ HashTable ht_nFlag

变量类型对应缩写
前缀 说明 缩写 举例
Bool[Boolean] 布尔型 b bFlag
Char[Character] 字符型 c cFlag
Byte 8位带符号整数 bt btFlag
Short 16位带符号整数 sht shtFlag
Int[Integer] 32位带符号整数 n nFlag
Long 64位带符号整数 l lFlag
Float 32位单精度浮点数 f fFlag
Double 64位双精度浮点数 lf lfFlag
String 字符串 s sFlag
Date 日期时间 dt dtFlag

例如:String sBookName;

规约:变量命名也必须使用驼峰规则,但是首字母必须小写,变量名尽可能的使用名词或名词词组。同样要求简单易懂,不允许出现无意义的单词。
如:String sBookName;  正确
如:String sBookNameString; 错误!

  1. 成员变量命名
    同变量命名,但不要在私有变量前添加m字样!
  2. 常量命名
    命名规则:类常量的声明,应该全部大写,单词间用下划线隔开。
    例如:static final int MIN_WIDTH = 4;
    例如:static final int MAX_WIDTH = 999;
    例如:static final int GET_THE_CPU = 1;
  3. 异常命名
    自定义异常的命名必须以Exception为结尾。已明确标示为一个异常。

public class MySecondException extends Throwable {

public MySecondException() {

super();

}

public class MyFirstException extends Exception {

public MyFirstException() {

super();

}
9. layout 命名
Activity默认布局,以去掉后缀的Activity类进行命名。不加后缀
Activity子布局,父布局名称开始,追加item 和子布局功能说明。
例如:Activity默认布局:homeposter.xml 子布局为homeposter_item_poster.xml
10. id 命名
规约:layout 中所使用的id必须以全部单词小写,单词间以下划线分割,并且使用名词或名词词组,并且要求能够通过id直接理解当前组件要实现的功能。
view的缩写详情如下
LayoutView:lv
RelativeView:rv
TextView:tv
ImageView:iv
ImageButton:im
Button:btn

  1. 资源命名
    规约:layout中所使用的所有资源(如drawable,style等)命名必须以全部单词小写,单词间以下划线分割,并且尽可能的使用名词或名词组,即使用 模块名_用途 来命名。如果为公共资源,如分割线等,则直接用用途来命名
    如:menu_icon_navigate.png  正确
    如:某分割线:line.png 或 separator.png 正确
    btn_login_normal
    按钮图片使用btn_功能_说明
    bg_head
    背景图片使用bg_功能_说明
    def_search_cell
    默认图片使用def_功能_说明
    icon_more_help
    图标图片使用icon_功能_说明
    seg_list_line
    具有分隔特征的图片使用seg_功能_说明
    sel_ok
    选择图标使用sel_功能_说明
    注释
    Java 程序有两类注释:实现注释(implementation comments)和文档注释(document comments)。实现注释是使用//和//界定的注释。文档注释(被称为”doc comments”)由/*…/界定。文档注释可以通过javadoc 工具转换成HTML 文件。

  2. 文件注释
    所有的源文件都应该在开头有一个注释,其中列出类名、版本信息、日期和版权声明。
    如下:
    /*

    • 文件名
    • 包含类名列表
    • 版本信息,版本号
    • 创建日期。
    • 版权声明
      */
  3. 类注释
    每一个类都要包含如下格式的注释,以说明当前类的功能等。

/**
* 类名
* @author 作者

* 实现的主要功能。
* 创建日期
* 修改者,修改日期,修改内容。
*/

  1. 方法注释
    每一个方法都要包含 如下格式的注释 包括当前方法的用途,当前方法参数的含义,当前方法返回值的内容和抛出异常的列表。

/**
*
* 方法的一句话概述
*

方法详述(简单方法可不必详述)


* @param s 说明参数含义
* @return 说明返回值含义
* @throws IOException 说明发生此异常的条件
* @throws NullPointerException 说明发生此异常的条件
*/
  1. 类成员变量和常量注释
    成员变量和常量需要使用java doc形式的注释,以说明当前变量或常量的含义
    /**

    • XXXX含义
      */
  2. 其他注释
    方法内部的注释 如果需要多行 使用/…… /形式,如果为单行是用//……形式的注释。不要再方法内部使用 java doc 形式的注释“/……/”,简单的区分方法是,java doc形式的注释在 eclipse中为蓝色,普通注释为绿色。

  3. XML注释
    规约:如果当前layout 或资源需要被多处调用,或为公共使用的layout(若list_item),则需要在xml写明注释。要求注释清晰易懂。
0 0