最近公司要求每人总结一份代码规范,然后我根据平常自己对代码规范的要求,总结了一下。
1 命名规范
命名规则
- 大驼峰命名(UpperCamelCase):每个单词的第一个字母大写,其他字母小写。
- 小驼峰命名(lowerCamelCase):如果仅有一个单词,那么所有字母全部小写,如果是两个及以上的单词组成的名称,那么除了第一个单词是全部小写外,其他但是的首字母大写,其他字母小写。
- 所有的命名都应该以字母(A-Z或者a-z)、美元符($)或者下划线(_)开始;
- 首字符之后可以是字母(A-Z或者a-z)、美元符($)或者下划线(_)或者数字的任何字符组合;
- 严禁使用关键词命名;
- 严禁使用拼音与英文的混合方式命名,更不允许使用中文的方式命名;
- 命名尽量使用英文,除了通用的拼音(Beijing)可视为英文,其他的拼音都不是英文;
- 命名除了常见的英文缩写,尽量避免使用缩写;
- 命名需要简洁,见名知意,通俗易懂;
1.1 包的命名
包的命名由全部小写的单词组成。一般使用公司的域名的作为自己程序包的唯一前缀,使用倒域名规则,例如:com.baidu.项目名
,然后针对每个具体的模块在区分每个模块包名,例如:论坛模块的整体包名:com.baidu.项目名.tribune
。
1.2 类的命名
类的命名遵循大驼峰命名的规则,常见类的命名规则如下:
类 | 描述 | 举例 |
---|---|---|
Activity类 | 以Activity为后缀 | 启动页面:LaunchActivity |
Fragment类 | 以Fragment为后缀 | 论坛推荐列表:TribuneRecommendFragment |
Adapter类 | 以Adapter为后缀 | 论坛适配器:TribuneAdapter |
ViewHolder类 | 以ViewHolder为后缀 | 广告类型:AdViewHolder |
Bean类 | 以Bean为后缀 | 新闻实体类:NewsBean |
Model类 | 以Model为后缀 | 论坛推荐Model:TribuneRecommendModel |
工具类 | 以Util为后缀 | 网络工具类:NetWorkUtil |
Service类 | 以Service为后缀 | 音频服务:AudioService |
BroadcastReceiver 类 | 以Receiver为后缀 | 音频广播:AudioReceiver |
ContentProvider类 | 以Provider为后缀 | 联系人的内容提供者:ContactsProvider |
Dialog类 | 以Dialog为后缀 | 加载:LoadingDialog |
监听器类 | 以Listener为后缀 | 网络监听:NetWorkListener |
自定义基础类 | 以Base为前缀 | 例如:BaseActivity,BaseFragment |
抽象类 | 以 Abstract或者Abs为前缀 | 例如:AbsBean |
管理类 | 以Manager为后缀 | 联系人管理类:ContactsManager |
解析类 | 以Parser为后缀 | 新闻Json解析类: NewsJsonParser |
1.3 接口的命名
接口命名遵循大驼峰命名的规则,以大写的I开头,表示这是一个接口,以able或ible截尾。
1.4 变量命名
变量的命名遵循小驼峰命名的规则,其中控件的变量建议使用控件缩写+逻辑名称的格式,例如:
private TextView tvUserName;
。
其中布局中每个控件的id命名为控件缩写_逻辑名称,例如:tv_user_name
。
常见控件的缩写如下:
控件 | 缩写 | 控件 | 缩写 |
---|---|---|---|
TextView | tv | EditText | et |
Button | btn | ImageView | iv |
Listview | lv | RecyclerView | rv |
GridView | gv | WebView | wv |
Linearlayout | ll | RlativeLayout | rl |
FrameLayout | fl | ScrollView | sv |
ProgressBar | pb | ImageButton | ib |
CheckBox | cb | RadioButton | rb |
RadioGroup | rg | SeekBar | sb |
VideoView | vv | SurfaceView | sv |
1.5 常量的命名
常量名称的每个单词都大写,并且每个单词之间通过下划线(_)连接,例如:
public static final int REQUEST_KEY_CODE = 1;
1.6 方法的命名
方法的命名遵循小驼峰命名的规则,以动词+名词的方式组成,例如初始化view:initView()
。
1.7 资源文件命名
全部小写,并通过下划线连接。
1.7.1 布局文件的命名
以对应的类别名称为前缀,然后紧跟模块包名,最后是逻辑名称,他们之间通过下划线连接。
常见的命名如下:
布局类型 | 布局前缀 | 举例 |
---|---|---|
Activity | activity_模块名_ | 求助主页面:activity_sos_main |
Fragment | fragment_模块名_ | 论坛推荐:fragment_tribune_recommend |
列表item | item_模块名_ | 论坛推荐:item_tribune_recommend |
Dialog | dialog_ | 论坛详情页回复:dialog_tribune_reply |
Include | include_ | 全局通用的标题栏:include_global_title |
1.7.2 动画资源文件命名
动画效果 | 命名风格 |
---|---|
淡入/淡出 | fade_in/fade_out |
从某个方向淡入/淡出 | fade_方向_in(out) |
从某个方向弹入/弹出 | push_方向_in(out) |
从某个方向滑入/滑出 | slide_方向_in(out) |
1.7.3 value中name命名
1.7.3.1 strings.xml
命名格式:string_模块名_逻辑功能,例如:启动页面的跳过:
<resources>
<string> name="string_launch_jump">跳过</string>
</resources>
1.7.3.2 colors.xml
命名格式:color_颜色值,其实颜色值是16进制,例如:白色:
<resources>
<color> name="color_ffffff">#FFFFFF</color>
</resources>
1.7.3.3 styles.xml
遵循大驼峰命名的规则,XXXStyle,例如:LoadingStyle
。
1.7.3.4 dimens.xml
- 文字:font_字号,字号单位是sp;
- 距离:space_距离值,距离单位是dp;
- 控件的宽高:具体控件width/height宽高值,宽高值单位是dp。
代码如下:
<resources>
<dimen name="font_18">18sp</dimen>
<dimen name="space_16">16dp</dimen>
<dimen name="button_width_48">48dp</dimen>
<dimen name="button_height_24">24dp</dimen>
</resources>
2 格式规范
2.1大括号的使用
- 大括号的开始在代码块开始的行尾,结束在代码块同一缩进的行首;
- 条件语句一定使用大括号;
- 左大括号前不换行,右大括号前换行,除了if-else,try-catch;
- 大括号内没有任何代码,不换行。
2.2 空格的使用
- 表示分隔时用一个空格;
- 运算符两边用一个空格隔开;
- 逗号语句后面如果不换行,也用一个空格。
3 注释
3.1 类、接口注释
使用多行注释的方式,规则如下:
/**
* Author:开发人员姓名
* Email:开发人员邮箱
* Description: 描述该类/接口实现的具体功能
* Date: 2017/4/20 14:16 创建该类的时间
*/
3.2 方法注释
3.2.1 整体方法注释
使用多行注释的方式,规则如下:
/**
* 描述方法实现的功能
* @param s 说明参数含义
* @return 说明返回值含义
*/
3.2.2 方法内部注释
- 方法内部单行注释,在被注释语句上方另起一行,使用“//”注释。
- 方法内部注释,使用/* ... */注释。
- 注释与代码要对齐,*及// 与其后面的文字之间空一格。
3.3 变量注释
使用单行注释的方式,使用“//”注释,在变量后面天啊及,如果注释太长,在变量上方添加。
3.4 xml注释
<!--注释内容-->
以上,是我目前总结的常用的Android代码规范,希望对大家有所帮助,以后会根据自己对代码规范的要求提升继续补充!
网友评论