参考《阿里android开发手册》,总结出更简单的开发规范;加于理解,结合实际开发经验做了一些调整,并加了些例子希望更体验出良好的规范。
1.Android 资源文件命名与使用
1. 【推荐】资源文件需带模块前缀module。
module:分一级跟二级,文件名以一级命名module:comm、main; id和name要精确到二级命名main_mine
如何有基库工程统一使用base前缀,如需子工程决定的资源使用client前缀。
基库工程如: <dimen name="base_title_height">45dp</dimen>
<item name="client_load_pic_default" type="drawable"/>
<item name="client_config_log" type="bool">false</item>
子工程: <item name="client_load_pic_default" type="drawable">@drawable/icon_apk</item>
<item name="client_config_log" type="bool">true</item>
2. 【推荐】layout 文件的命名方式。
文件 | 前缀 | Demo |
Activity | module_activity | main_activity、 |
Fragment | module_frag | main_mine_frag、 |
Dialog | module_dialog | main_register_dialog |
include | module_include | comm_include、main_include |
ListView | module_list_item | main_mine_list_item |
RecyclerView | module_recycle_item |
|
GridView | module_grid_item |
|
3. 【推荐】 drawable 资源名称以小写单词+下划线的方式命名,使用一套drawable-xhdpi(目前都是1080p手机,达到精致app界面,按理应放在xxhdpi下,这样一来增加图片大小从而增加apk大小,二来在底密度平板上图片显示严重失真)。
【推荐】图片放在https://tinypng.com/压缩后放进工程里。
采用规则如: 模块名_业务功能描述_控件描述_控件状态限定词
如:comm_logo_40x40_normal、login_submit_btn_enabled
模块名 | 业务功能描述 | 控件描述 | 控件状态限定词 |
comm | logo | 40x40 | normal |
login | submit | btn | enabled |
login | protocol | cb | checkable |
finance | tab | radiobtn | checked |
finance_detail | order | lv | selected |
|
| btn | pressed |
|
| btn | unenabled(un+state) |
4. 【推荐】anim 资源名称以小写单词+下划线的方式命名,采用以下规则:
模块名_逻辑名称_[方向|序号]
tween动画资源:以模块名_[alpha|move|rotate]_[方向]_[进|出]
如 module_alpha_in ,module_alpha_out , module_move_down_in (动画+方向);
frame 动画资源:以模块+功能命名+序号。如:module_loading_grey_001
5. 【推荐】dimen 资源以小写单词+下划线方式命名,写入 module_dimens.xml 文件中,
采用以下规则:
模块名_[h|v]_描述信息
如:<dimen name="module_h_line">1dp</dimen>
6. 【推荐】 color 资源使用#AARRGGBB 格式,写入 module_colors.xml 文件中,
命名格式采用以下规则:
模块名_逻辑名称
如:<color name="module_btn_bg">#33b5e5e5</color>
7. 【推荐】style 资源采用小写单词+下划线方式命名,写入 module_styles.xml 文件中,
采用以下规则:
父 style 名称.当前 style 名称
如:
<style name="ParentTheme.ThisActivityTheme">
…</style>
8. 【推荐】string资源文件或者文本用到字符需要全部写入module_strings.xml文件中,
字符串以小写单词+下划线的方式命名,采用以下规则:
模块名_逻辑名称
如:login_tips,main_homepage_notice_desc
9. 【推荐】Id 资源原则上以驼峰法命名,View 组件的资源 id 需要以 View 的缩写作为
前缀。全称以前缀_module_描述。常用缩写表如下:
控件 | 缩写 | 控件 | 缩写 | Id Name Demo |
LinearLayout | ll | TextView | tv | tv_login_version |
RelativeLayout | rl | Button | btn | btn_main_history |
ConstraintLayout | cl | ImageView | iv | btn_mine_register |
ListView | lv | CheckBox | ch |
|
RadioGroup | rg | RadioButton | rb |
|
ScollView | sv | EditText | et |
|
2.Java命名
2.1变量命名:
1.【推荐】均不能以下划线或美元符号开始,也不能以下划线或美元符号结束
2.【推荐】严禁使用拼音与英文混合的方式,避免采用纯拼音命名方式
3.【推荐】常量命名全部大写,单词间用下划线隔开
4.【推荐】定义数组类型要与中括号紧挨相连来 int[] arrayDemo
5.【推荐】类中布尔类型的变量,都不要加 is 前缀(属性名称为isXXX或者XXX的话,他的getter都是isXXX,前缀如果加了is,会被部分框架“误以为”对应的属性名称是 XXX)
6.【推荐】long 或者 Long 初始赋值时,使用大写的 L ,不能是小写的 l ,小写容易跟数字 1 混
淆,造成误解
7.控件成员变量命名:控件以 View 的缩写作为前缀+描述(驼峰命名)
其他类型类成员变量命名以m为前缀+描述+类型(最后一个大字以后一个)
(注:方法内变量则不需要m前缀)
如:
类型 | 前缀 | 描述 | 后缀 | 全称 |
LinearLayout | ll | menu |
| llMenu |
ListView | lv | lvContent |
| lvContent |
String | m | Name | String | mNameString |
Resp | m | UserInfo | Resp | mUserInfoResp |
ArrayList | m | friend | List | mFriendList |
HashMap | m | select | Map | mSelectMap |
Fragment | m | mine | Fragment | mMineFragment |
2.2类命名:
1.【推荐】抽象类命名使用 Abstract 或 Base 开头
2.【推荐】异常类命名使用 Exception 结尾
3.【推荐】测试类命名以它要测试的类名开始,以 Test 结尾
4.【推荐】抽象类命名使用 Abstract 或 Base 开头 ; 异常类命名使用 Exception 结尾 ; 测试类
命名以它要测试的类名开始,以 Test 结尾。
5.【推荐】枚举类名建议带上 Enum 后缀,枚举成员名称需要全大写,单词间用下划线隔开。
6.【推荐】如果变量值仅在一个固定范围内变化用 enum 类型来定义。