一些约定
- 类中public方法在前,private在后,所有不对外的方法,变量全部使用private修饰符。类中public static final的常量在最上方,其次private static final,然后public,private等。
- 类中定义的接口放在变量声明之后,所有方法之前。
- 方法相关性,方法之间有调用关系的,按照先后顺序排列在一起。
- 善用空行,方法体之间必须空行,代码逻辑块之间使用空行分隔,变量声明根据变量类型适当空行。
- 方法体不要过长,尽量提取小方法代替逻辑块,保证代码可读性。
- 善用TODO,对于未完成或已完成但是方案不完美需后续跟踪的,使用TODO标签标示,并写好注释。
- 不建议注释太多,要通过方法名,变量名提高代码可读性,而非注释。但是一些非常规方法,复杂逻辑,需要详细注释说明。
- 协作中,不要做整个代码的格式化,仅格式化自己编写的那部分。
- 注意命名以及注释英文单词,不要写错~
- 杜绝“Magic Number”-神奇数字, 所有数值根据情况提取为常量,dimen或constant。
代码规范
- 使用Android Studio提供的格式化规范。
命名规范
1. 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命名
分类 |
命名方式 |
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加上库地址。
- 编译相关的常量写入编译脚本。
Mingjun's Working Notes