Android代码规范
Android编码规范(Ver 0.1)
0 普适原则
1.直白式的代码比起注释来的更有意义
2.空格、换行相关的规范,需导入eclipse_code_formatter.xml,编辑完代码后执行格式化操作
3.Coders不能为了图方便而牺牲了代码的健壮性和可理解性
4.新增代码需完全遵守规范;老代码不符合规范,则在有相关功能时同步修改。
1 命名
1.1 命名需要富有含义,尽量能达到见名知义的程度,避免无意义的命名。
1.2 变量名详细程度,根据变量作用范围而定,成员变量 > 大函数的局部变量 > 小函数的局部变量,作用域越大,变量名则应更详细。
如对于一个类型的变量,成员变量命名为mCachedShareConfigEvent,小函数的局部变量可以命名为event。
1.3 类名
采用大驼峰命名法,尽量避免缩写。Activity、Fragment、Adapter等常见类型应添加对应的后缀标识。
类名通常是名词或名词短语,接口名称有时可能是形容词或形容词短语。
1.4 方法名
- 采用小驼峰命名法,方法名通常是动词或动词短语。布尔类型函数使用谓语动词为前缀。
如initXX()、displayXX()、isXX()。
- 回调类方法,添加On前缀,如onRequestFaild(MobileErrorCodemobileErrorCode)
1.5 变量名
- 采用小驼峰命名法,成员变量以m开头。常量名命名模式为CONSTANT_CASE。
- 前缀后面,是由表意性强的一个单词或多个单词组成的名字。
- 最后,可以根据情况添加类型、量词后缀。
例外:CEvent消息及相关的实体类;@ViewById注解的控件变量;
ps:因为xml中控件的命名限制,及框架的View注入原因。控件类变量名为单词小写,单词间以下划线分割,以控制类型缩写为前缀(控件缩写表见文档末尾)。
例:mFollowingAnchorInfos,lv_following_anchors。
1.6 资源文件命名:因为资源类型需要在代码中以R文件引用,所以总体规则为:类型前缀+逻辑描述,方便查找。
类型 | 举例 | 说明 |
contentView | fragment_room | Fragment的contentView必须与其类名对应, 将所有字母都转为小写,将类型和功能调换(也就是后缀变前缀) |
列表项 | item_following_anchors.xml | item_描述.xml |
id命名 | lv_following_anchors btn_rotate_screen | view缩写_view的逻辑名称 |
2 注释
2.1 每个public类,及它的每个public成员变量、方法都需要添加Javadoc注释。
函数的javadoc注释,需说明参数,返回值。
例外:不言自明的方法,如getter、setter方法。重载的方法。
2.2 其他需要添加注释的地方(不需用javadoc形式)
重要的private函数、变量;难于理解地方;特殊的业务逻辑、约定;
ps:注释主要是为了说明变量名、方法名无法阐述的含义,不要直接翻译。如果命名足够好,可以不写注释。
3 代码数量限制
3.1 一个函数体不要超过80行(除非有充分的理由)
3.2 函数中大括号不要超过4层
3.3 三行以上(包括三行)重复三次(包括三次)以上,或五行以上(包括五行)重复两次(包括两次)以上,代码必须另写出一个函数;如果有一两个地方不同,要考虑使用参数进行概括,而使之成为共用的一段代码
4 其他
3.1 避免魔数,如if(res.result== 99)
3.2 xml布局,对于整体布局-子View有间距需求的,统一父布局做统一的上下左右间隔,不要在每个子控件去做整体布局的上下左右间距处理。
99. 附录
- 变量起名规则
维护一个开发单词与中文的对应关系字典(方案宣讲后,功能负责人更新),记录相关默认的英文单词以及特定任务的英文单词。方便开发中起名的统一性。
http://172.17.100.22/svn/starx52/x5_mobile/doc/新Android端/Android端变量命名中英文映射表.doc
对于难起名的变量需要与大家讨论,形成具体名称后更新开发单词字典,并记录在解决方案中。
- 控件缩写
控件 | 缩写 | 例子 |
LinearLayout | ll | ll_friend 或 mFriendLL |
RelativeLayout | rl | rl_message 或 mMessageRL |
FrameLayout | fl | fl_cart 或 mCartFL |
Button | btn | btn_home 或 mHomeBtn |
TextView | tv | tv_name 或 mNameTV |
EditText | et | et_name 或 mNameET |
ListView | lv | lv_cart 或 mCartLV |
ImageView | iv | iv_head 或 mHeadIV |
GridView | gv | gv_photo 或 mPhotoGV |
- 不好的变量名举例
Bad |
|
private ClickDiminishListView cdlList; | 无意义 |
private ArrayList<RewardBasicItem> reList; | 无意义 |
private int m_gift_id = 0; | 格式不对 |
|
|
|
|
|
|