参考《阿里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 类型来定义。