说明 | |
---|---|
更新日期 | 2019-01-22 |
前言:无论哪种开发,都有一定的规范或者一些约定俗成的写法。遵循开发规范,无论是接手他人项目,还是他人接手自己的项目,都能快速上手。为此,在网上搜索了一些安卓的开发规范,并结合安卓系统的写法,整理记录。
包命名规范
采用反域名命名规则,全部使用小写字母。一级包名为com,二级包名为groupname(可以是公司或个人命名取的名词),三级包名根据应用程序名来取名,四级包名为模块名或层级名。比如:com.tencent.myapplicationname,表示tencent机构写的应用程序包名。
工程中的Java文件分包:
举例 | 说明 |
---|---|
com.tencent.adapter | Adapter类 |
com.tencent.domain | 实体类,对象类 |
com.tencent.bean | 元素类 |
com.tencent.utils | 工具类 |
com.tencent.ui | 视图类 |
com.tencent.activity | 页面用到的Activity类 |
com.tencent.base | Android应用中使用到的基类 |
com.tencent.db | 数据库操作类 |
com.tencent.view | 自定义的View类 |
com.tencent.service | 服务类 |
com.tencent.broadcast | 广播类 |
com.tencent.constant | 常量字段类 |
com.tencent.widget | UI类 |
com.tencent.activity | Activity类 |
类名规范——Class
类名必须是名词,常采用帕斯卡命名规则(每个单词的首字母都必须大写),尽量避免缩写;
除非是约定俗成的名称,类名称中包含单词缩写的每个字母均应大写或者是首字母大写,例如:URL、HTML、HTTP等。
类名规范举例说明:
Activity类:WelcomeActivity、CourseActivity等;
Adapter类:NewDetailAdatper等;
公共方法类:ThreadPoolManager、LogTools等;
数据库类:NewDBHelper等;
Service类:TimeService等;
BroadcastReceiver类:TimeBroadcastReceiver等;
接口规范——Interface
接口命名规范和类规范一样采用帕斯卡命名规范,多以-able或-ible结尾(形容词或者副词),用以表示具备的一种功能,如Runnable、Accessible等。
方法规范——method
常见于动词或者动名词,采用驼峰命名法,如onCreate()等。
例如:
initXxx():初始化相关方法,使用init-作为前缀,例如:初始化布局initView();
isXxx():isXxxx()或者checkXxx()返回值为指定类型,使用is-或者check-为前缀;
getXxx():返回某种类型的值,使用get-为前缀;
processXxx():对数据进行处理,以process-为前缀;
displayXxx():弹出提示框或提示信息,以display-为前缀;
saveXxx():保存数据相关的方法,以save-为前缀;
resetXxx():对数据重置,或者是界面重置,使用reset-为前缀;
clearXxx():清除操作相关,使用clear-为前缀;
drawXxx():绘制数据或效果相关,使用draw-为前缀。
变量——variety
Android中变量的命名都采用驼峰命名规范,常见于名词。
普通变量命名规范
在需要表示一组变量的情况中,结尾处使用统一的量词,可以创建更加统一的变量,比如:
_First表示一组变量中的第一个;
_Last表示一组变量中的最后一个;
_Next表示一组变量中的下一个;
_Pre表示一组变量中的上一个;
_Cur表示一组变量中的当前变量;
常量——CONSTANT
常量全部用大写,采用下划线命名法,常使用名词。
代码中不允许出现直接硬编码的字面常量,如果是控件上显示的文本,必须放在/res/values/string.xml资源文件中;如果是代码中用到的常量字符串,必须定义成public static final String类型的常量值。
在Activit之间传递的参数,intent.putExtra(key, value)使用的key值也应该统一定义为静态常量,不能直接硬编码在代码中。
MIN_WIDTH表示最小的宽度值;
RESULT_PARSE_JSON_EXCEPTION;
RESULT_SUCCESS;
RESULT_NETWORK_EXCEPTION;
RESULT_NO_DATA;
Layout资源文件
Layout资源文件有多种,每种文件的命名规范均使用文件功能开头,如activity-、fragment-等。
activity资源文件:activity_description1_description2.xml;
fragment资源文件:fragment_description1_description2.xml;
drawable资源文件:controlName_description1_description2_selector.xml,
其中controlName表示该资源要用在什么类型的控件上。
例如:如果是按键的图片切换,则使用button_bg_sendmessage_selector.xml;selector表示该资源的形式,还比如:shape等。
颜色值的命名:color_description以color为前缀,description既可以是该颜色的功能描述,也可以是具体的颜色。
例如:color_white、color_grey、color_button_pressed等。
控件的ID命名规范
参考模式:业务逻辑控件类型功能。
例如:
splash_tv_version:表示该控件是使用splash业务逻辑中具有版本控制功能的TextView;
user_btn_register表示该控件是使用在user业务中具有register功能的Button。
此外需要注意的是:.xml文件中的控件ID必须和.java文件中对应的控件对象名保持一致。
xml文件命名规范
-
.xml布局文件全部采用小写,使用下划线命名;
-
UI类文件命名规范:显示每个UI界面,每个类命名为:XxxActivity;同时界面类名和相应的.xml文件相同。如:activity_login.xml对应的类名为LoginActivity;
-
res/layout文件夹下的.xml文件,统一用小写和下划线“”组合命名 --> 模块名功能名.xml;
-
res/drawable文件中的资源:统一用小写和下划线“”组合命名 --> 待使用文件名逻辑名称,main_default.png;
-
adapter的子布局:功能模块_item.xml,如:main_item.xml;
资源文件(drawable文件夹下的文件),全部小写,采用下滑线的形式命名; -
btn_功能_说明:为按键命名
-
bg_功能_说明:为背景命名
-
def_功能_说明:为默认的资源文件命名
-
icon_功能_说明:为图标命名
命名后缀:
select:图片状态,代表选中状态
unselect:图标状态,代表未选中状态
与布局相关的控件变量命名规范
-
类中的控件变量名必须与.xml布局id保持一致;
-
若控件变量为类的字段,以m开头;
-
控件变量名命名规则:类型+功能。如:mBtnBeginTest...
-
对象类变量在方法体结束后,手动设置为null,以利于资源回收。
-
不要使用原义数字或原义字符串,而是使用命名常量,以便于维护。如NUM_DAYS_IN_WEEK
其他:
源代码中尽量避免连续多行,应根据功能使用空行把代码适当地分段,代码段功能尽量清晰;如不能在30秒内理解代码功能,应为之添加注释予以说明。
源程序中要有适当的注释。
注释有助于裂解代码,有效的注释是指在代码的功能、意图层次上进行注释,提供有用的、额外的信息,而不是代码表面意义的简单重复。
包含在“{}”中代码块的结束处要进行注释,便于阅读。特别是多分支、多重嵌套的条件语句或循环语句。对分支语句(条件分支、循环语句)必须编写注释。