概述
为了能够更好地阅读代码,提高代码的可读性,缩短审查和修改代码过程中浪费的时间,特制订以下编码规范,包括
包名,类名,接口,方法,变量,常量,资源图片,布局文件,动画文件,控件ID,色值,自定义View等声明规范。
基本原则:名词命名对象,动词命名函数。
名词解释:
- 小驼峰命名法:除首单词外,其余所有单词的第一个字母大写;
- 大驼峰命名法:所有单词的第一个字母大写;
- 下划线命名法:单词与单词间用下划线做间隔。
正文
1 包名
基本规则:全部使用小写字母。
app主包名参照:《Android版本号和包名命名规范V1.0》
范 例:com.hengda.smart.shanghaighg.m
本次主要定义模块名或层级名(实际开发中根据相应架构可做适当修改)
包名 | 说明 |
---|---|
com.hengda.xx.xx.xx.base | 基础共享的类比如BaseActivity,BaseFragment等 |
com.hengda.xx.xx.xx.tools | 公共工具方法类,比如网络状态判断,文件路径判断等 |
com.hengda.xx.xx.xx.bean | 各种javabean,比如网络请求实体,数据库实体等 |
com.hengda.xx.xx.xx.db | 数据库操作类 |
com.hengda.xx.xx.xx.adapter | 模块或公共适配器类 |
com.hengda.xx.xx.xx.view | 自定义的view |
com.hengda.xx.xx.xx.service | service服务 |
com.hengda.xx.xx.xx.broadcast | 广播类 |
com.hengda.xx.xx.xx.listener | 自定义的监听器 |
2 类名
基本规则:大驼峰命名。
类 | 规则 | 举例 |
---|---|---|
Activity类 | 以Activity为后缀标识 | 主界面:MainActivity,登录界面LoginActivity |
Fragment类 | 以Fragment为后缀标识 | 地图:MapFragment, 用户:UserFragment |
Adapter类 | 以Adapter为后缀标识 | 用户适配器:UserAdapter |
公共方法类 | Utils或Manager为后缀标识 | 线程池:ThreadPoolManager,日志工具:LogUtils |
数据库类 | 以DBHelper为后缀标识 | 展品数据库:ExhibitDBHelper |
Service类 | 以Service为后缀标识 | 收号服务:BeaconService |
广播类 | 以receiver为后缀标识 | 通知广播:NotifyReceiver |
adapter中的ViewHolder | 以Holder为后缀标识 | 同伴列表中的PartnerHolder |
实体Bean | 以bean为后缀标识 | 用户实体 UserBean |
类注释
所有类,接口需要添加注释,格式如下
/**
* author:作者
* time:时间
* desc:描述
*/
3 接口
基本规则:大驼峰命名。
监听类接口以大写字母I开头例如:INotifyListener,INotifyCallBack等
点击触发类以On开头例如:OnClickListener。
4 方法
基本规则:小驼峰命名,禁止拼音;
注意事项
- 不要在函数名中描述参数,根本无意义。例如findExhibitByAutoNumAndType(int autoNum, int type) 可以简化成 findExhibit(int autoNum, int type)。
- 注意上下文是否已暗示主语,比如一个保存信息的方法,可以叫做saveMessage(),如果这是Message类的一个方法,就可以简化为save()。
- 一般情况下不要使用表达不明确的词语,比如do ,handle, perform, return 等等。
- 方法参数需要正确表达含义比如doSomething(String s1, String s2, String s3)应该写成doSomething(String userName, String userEmail, String userId) 。
此外,在Activity,Fragment,各种View,接口等等中请按照以下规则命名相应方法
方法 | 说明 |
---|---|
initXX() | 初始化相关方法,使用init为前缀标识,如初始化布局initView() |
getXX() | 直接访问数据时,比如javabean的数据获取等,其他情况另选更精确的动词 |
isXX() | 方法返回值为boolean型,is, are, was, were开头,或者搭配情态动词,can, could, may, might, must, shall, should, will 和 would,这些词隐含了假设当前条件为真的反问信息。比如Button.isEnabled(),User.canAccess() |
showXX() | 弹出提示框和提示信息,比如showErrorToast().比如showSucceesDialog() |
saveXX() | 保存数据 |
clearXX()或removeXX() | 清除数据 |
drawXX() | 绘制图形 |
resetXX() | 重置数据 |
setXX() | 数据或对象直接赋值 |
方法注释
重要方法需要添加方法注释,最好英文,格式如下:
/**
* desc:描述
* @param 参数名 参数描述
* @param 参数名2 参数描述
* @return 返回值类型说明(返回 void时可不写)
* @throws Exception 异常说明(可选)
*/
方法內部逻辑注释
全部使用“//”形式标注,注释位于需要注释的语句上方,例如
//请求成功
if (response.succeed() == 0) {
}
5 变量
基本规则:小驼峰命名
1 非public的、非static的字段名称以m开头,例如mXXButton,mXXListener等;
2 其它字段以小写字母开头 ,例如:userName ,passWord;
3 static字段名称以s开头 例如:sSingleton;
6 常量
基本规则:全部大写,单词不缩写望文知意原则,下划线命名法。例如:MAX_SCREEN_WIDTH。
7 资源图片
基本规则:全部小写,采用下划线命名法,单词禁止出现拼音;
启动图标:ic_launcher.png
如果图片可以为各个模块公用可不加模块名,否则需加模块名。
类型 | 规则 | 举例 |
---|---|---|
按钮 | btn_模块_功能_状态 或者 btn_功能_状态 | btn_login_back_normal.png 或者 btn_back_normal.png |
图标类 | ic_模块_说明 或者 ic_说明 | ic_usercenter_userheader.png 或者 ic_userheader.png |
背景 | bg_模块 或者 bg_说明 | bg_login.png 或者 bg_white.png |
图片 | img_模块_说明 或者 img_说明 | img_login_header.png 或者 img_header.png |
带点击效果控件 | btn_模块_功能_selector 或者 btn_功能_selector | btn_login_back_selector.xml 或者 btn_back_selector.xml |
默认图 | def_模块_说明 或者 def_说明 | def_usercenter_header.png 或者 def_header.png |
分割线 | div_说明 | div_top.png |
名称 | 状态 |
---|---|
_normal | 默认 |
_pressed | 按下 |
_focused | 获取焦点 |
_disabled | 不可点击 |
_checked _selected | 选中 |
_hovered | 获取光标 |
_checkable | 可被选中 |
_activated | 激活 |
_windowfocused | 窗口焦点 |
点击效果状态命名规则(参考自android-selector-chapek使用本规则可使用android-selector-chapek插件快速生成selecter文件)
8 布局文件
基本规则:全部小写,下划线命名法,单词禁止出现拼音;
名称 | 规则 | 举例 |
---|---|---|
Activity | activity_模块名.xml | activity_register.xml |
Fragment | fragment_模块名.xml | fragment_map.xml |
Dialog | dialog_说明.xml | dialog_editname.xml |
List列表 | item_说明.xml | item_partners.xml |
PopupWindow | ppw_说明.xml | ppw_floorlist.xml |
其他子布局 | 模块_说明_item.xml | main_menu_item.xml |
包含项 | layout_说明.xml | layout_header.xml |
9 动画文件
基本规则;全部小写,下划线命名法;
10 控件Id
基本规则:全部小写,下划线命名法,单词禁止出现拼音;
格式:控件缩写_功能
控件 | 缩写 |
---|---|
Button | btn |
TextView | tv |
ImageButton | ib |
ImageView | iv |
Linearlayout | ll |
Relativelayout | rl |
Framelayout | fl |
EditText | et |
SeekBar | skbar |
ScollView | scv |
ListView | lv |
ProgressBar | psbar |
WebView | wv |
CheckBox | cb |
RadioButton | rb |
10 colors.xml
基本规则:全部小写,下划线命名法;
分类 | 规则 | 举例 |
---|---|---|
纯色 | 直接色值命名 | black |
非纯色 | 模块说明主题色 | login_username_light |
如果APP只有单一主题可不用设置主题色
11 自定义View
基本规则:大驼峰命名法,以View结尾
格式:功能+View
举例:TipsView;
12 Menu菜单
基本规则:全部小写,下划线命名法;
格式:模块功能.xml
举例:search_add.xml
因为menu文件统一放在menu文件夹下所以不需要再加menu前缀。
13 strings.xml
//还没想好