无规矩不成方圆,国家如此,社会如此,当然我们做开发的也有一定的规范。
Android开发编程规范
• 一些约定
• 代码规范
• 命名规范
①. Java命名
②. 资源命名
③. 布局文件中的View id命名
• 其他规范
一些约定
• 类中public方法在前,private在后,所有不对外的方法,变量全部使用private修饰符。类中public static final的常量在最上方,其次private static final,然后public,private等。
• 类中定义的接口放在变量声明之后,所有方法之前。
• 方法相关性,方法之间有调用关系的,按照先后顺序排列在一起。
• 善用空行,方法体之间必须空行,代码逻辑块之间使用空行分隔,变量声明根据变量类型适当空行。
• 方法体不要过长,尽量提取小方法代替逻辑块,保证代码可读性。
• 善用TODO,对于未完成或已完成但是方案不完美需后续跟踪的,使用TODO标签标示,并写好注释。
• 不建议注释太多,要通过方法名,变量名提高代码可读性,而非注释。但是一些非常规方法,复杂逻辑,需要详细注释说明。
• 协作中,不要做整个代码的格式化,仅格式化自己编写的那部分。
• 注意命名以及注释英文单词,不要写错~
• 杜绝“Magic Number”, 所有数值根据情况提取为常量,dimen或constant。
代码规范
• 使用Android Studio提供的格式化规范。
命名规范
①. Java命名
分类 | 命名方式 | 举例 | 说明 |
包名 | 全小写 | com.cicaero.kite | 公司域名倒序,“.”分隔,单个包名建议不超过12个字母 |
类名 | 首字母大写的驼峰 | UserInfo | 名词形式 |
接口名 | 首字母大写的驼峰 | ServerInterface | 名字形式 |
方法名 | 驼峰 | getUserInfo | 动词结构,含义为一个动作 |
常量 | 全大写,单词下划线分隔 | MSG_UPDATE_PROGRESS | 建议数值类常量从1开始,且根据功能预留数段 |
成员变量 | m/s/is/has开头的驼峰 | mImageUrl | 正常成员m开头,静态s开头,布尔型is/has开头 |
局部变量 | 首字母小写的驼峰 | currentPosition | 名词形式,除非是循环,否则不建议使用i,j,k等简单变量名 |
2. 资源命名
分类 | 命名方式 | 举例 | 说明 |
布局 | 全小写,单词下划线分隔 | activity_main.xml | Activity以activity开头,Fragment以fragment开头,list、grid项以item开头,Dialog布局以dialog开头,自定义View以layout开头,其他被include的或公用组件,诸如title_bar,bottom_bar,根据实际含义命名 |
Drawable | 全小写,单词下划线分隔 | btn_bg.png | 根据图片使用方式命名, 图标以ic_开头,背景以_bg结尾,状态drawable xml以_selector结尾。 |
Color | 全小写,单词下划线分隔 | green | 尽量根据颜色值命名 |
String | 全小写,单词下划线分隔 | app_name | 模块多且大的话,根据模块建立不同的String xml 文件 |
style | 首字母大写的驼峰 | NoTitleTheme | 类似类名,style本身也是有类似类的集成关系 |
dimension | 全小写,单词下划线分隔 | left_padding | |
id | 全小写,单词下划线分隔 | user_name_tv | 详细id命名规范参考以下章节 |
3. 布局文件中的View id命名
View | 结尾命名规则 |
TextView | tv |
Button | btn |
EditText | et |
ImageView | iv |
ImageButton | img_btn |
RadioButton | rb |
RadioGroup | rg |
SeekBar | seek |
ProgressBar | progress |
Spinner | spinner |
VideoView | vv |
CheckBox | cb |
ListView | lv |
GridView | grid |
Layout | lt |
其他规范
Gradle引入第三方库时comment加上库地址。