1.1 包命名规范(Package)
采用反域名规则,包名全部小写,连续的单词只是简单的连接起来,不适用下划线,一级包名为com,二级包名为companyname(一般用公司域名或者个人命名),三级包名为appname(一般根据应用命名),四级包名为模块名或层次名,五级包名可选(可以用具体的功能或者位置命名),如:
包名 | 此包中包含 |
---|---|
com.companyname.appname.adapter | 所有的adapter类 |
com.companyname.appname.api | 提供给其他团队调用的接口类汇总 |
com.companyname.appname.data | 所有的元素/数据类 |
com.companyname.appname.config | 配置类 |
com.companyname.appname.download | 下载相关的类 |
com.companyname.appname.fragment | 所有页面用到的fragment |
com.companyname.appname.providers | 所有的provider类以及相应的Helper类 |
com.companyname.appname.receivers | 广播接收相关类 |
com.companyname.appname.network | 网络请求相关类 |
com.companyname.appname.statistics | 发送统计需要用到的相关类 |
com.companyname.appname.util | 工具类 |
com.companyname.appname.viewholder | 列表展示用到的相应ViewHolder类 |
com.companyname.appname.view | 自定义View类 |
com.companyname.appname.listener | 回调接口类 |
2.1 Java类命名规范(Class)
类名以UpperCamelCase
风格编写。
采用大驼峰式命名法,所有单词的首字母均大写,尽量避免缩写,除非该缩写是众所周知的,比如HTML,URL,如果类名称包含单词缩写,则单词缩写的每个字母均应大写。如:
类 | 描述 | 例如 |
---|---|---|
Activity类 | Activity为后缀标识 | GameCenterHomeActivity |
Fragment类 | Fragment为后缀标识 | GameHomeFragment |
Adapter | Adapter为后缀标识 | GameRankAdapter |
公共方法类 | Manager或Tools为后缀标识 | DownloadManager |
Service类 | Service为后缀标识 | DownloadingService |
BroadcastReceive类 | Receiver为后缀标识 | NetworkStateChangeReceiver |
公共基础类 | Base为前缀,可放在Game之后 | GameBaseActivity |
ContentProvider | Provider为后缀标识 | GameCenterProvider |
辅助类 | Helper为后缀,这些类主要用于为某些类(如自定义View)提供一些集成的操作方法 | GameJsInterfaceHelper |
Dialog类 | Dialog为后缀标识 | GameDialog |
bean元素类 | Info为后缀标识 | GameInfo |
状态类,多为枚举类 | Status为后缀标识 | GameInfoStatus |
自定义View类 | View为后缀 | GameTagView |
ViewHolder类 | Viewholder为后缀 | GameHomeBannerItemViewholder |
工具类 | Utils为后缀标识 | FileUtils |
测试类的命名以它要测试的类的名称开始,以Test结束。例如,HashTest或HashIntegrationTest。
3.1 接口命名规范(interface)
采用大驼峰命名法。
在非主线程用到的接口名称多以able或ible结尾,如:
interface Runnable
| interface Accessible
在主线程用到的接口名称以OnNameListener
风格编写,On为前缀,Listener为后缀。
4.1 方法命名规范(method)
方法名都以lowerCamelCase
风格编写。
采用小驼峰,除首字母小写外,其他首字母大写,通常是动词或动词短语,如:
onCreate()
| run()
注意:接口类中的方法名全部以
on
为前缀标识
5.1 成员变量命名
以lowerCamelCase
风格编写。
采用小驼峰法。
5.1.1 成员变量命名
以mLowerCamelCase
风格编写,使用Google的m命名法,在成员变量名加上m前缀。例如:
private String mUserName;
5.1.2 常量命名
常量名命名模式为CONSTANT_CASE
,全部字母大写,用下划线分隔单词。常量是指用static final
关键字定义的,一直不变的值。
5.1.3 参数名
参数名以lowerCamelCase
风格编写。
参数应该避免用单个字符命名。
5.1.4 类型变量名
类型变量可用以下两种风格之一进行命名:
- 单个的大写字母,后面可以跟一个数字(如:E, T, X, T2)。
- 以类命名方式(2.1节),后面加个大写的T(如:RequestT, FooBarT)。
5.1.5 控件实例命名
类中控件名称必须与xml布局id保持一致(可以去掉{module_name}
),并与5.1.2节中的临时成员变量命名保持一致,以m为前缀,以首字母大写代替下划线分割。例如:
在布局文件中Button
的id为:android:id="@+id/btn_{module_name}_pay"
在类中控件实例命名为: private Button mBtnPay;
6.1 布局文件(Layout)命名规范
全部小写,采用下划线命名法。其中{module_name}
为业务模块或是功能模块等模块化的名称或简称。
Layout | 格式 | 例子 |
---|---|---|
activity layout | activity_{module_name}_{名称} | activity_home.xml |
fragment layout | fragment_{module_name}_{名称} | fragment_manager.xml |
Dialog layout | dialog_{module_name}_{名称} | dialog_loading.xml |
列表项布局命名(ListView中用到的item项) | listitem_{module_name}_{名称} | listitem_customer.xml |
包含项布局命名 | include_{名称} | game_include_head.xml |
非ListView中的adapter的子布局 | item_{module_name}_{名称} | item_order.xml |
自定义View的布局 | widget_{module_name}_{名称} | widget_shopping_detail.xml |
7.1 资源id命名规范
命名模式为:{view缩写}_{module_name}_{view的逻辑名称}
,如:
首页布局 LinearLayout
的布局id –> ll_home_content
简称为as模块的 ImageView
的布局id –> iv_as_photo
常见控件View与其缩写对照参考表如下:
控件 | 缩写 |
---|---|
LinearLayout | ll |
RelativeLayout | rl |
FrameLayout | fl |
TextView | tv |
Button | btn |
ImageButton | ibtn |
ImageView | img |
CheckBox | cb |
RadioButton | rb |
EditText | et |
ProgressBar | pbar |
WebView | webv |
ScrollView | sclv |
ListView | lv |
RatingBar | ratbar |
SeekBar | skbar |
8.1 图片资源文件命名规范(drawable文件夹下)
以{前缀}_{module_name}_{名称}
风格命名,全部小写,采用下划线命名法。
前缀 | 说明 |
---|---|
ic–icon | 图标 |
bg–background | 背景图片 |
btn–button | 主要用于按钮的表示,有时我们会在ic和btn之间犹豫,简单的区分即是功能视图,如果一个view执行的是back或者confirm或者cancel的功能,则命名上则应该使用btn |
di–divider | 分割线,不仅包括Listview中的还包括普通布局中的线 |
sl–selector | 主要用于某一view多种状态,listview 按钮等 |
cl–color | 主要用于颜色值 |
ps: 不知道用什么前缀的话,可以暂时用ic
9.1 字符串命名(string)
最好不要跟title、dialog、button等东西关系起来,直接用相同英文含义就可以了(可以以game_为前缀,防止与其他工程中的资源重名),如下:
<string name="ok">确定</string>
<string name="welcome_to_use">欢迎使用</string>
再举一些不好的例子,如下
<string name="menu_ok ">确定</string>
本篇参考文章列表:
- 最佳实践之代码规范-http://www.androidchina.net/2141.html
- hawstein分享的 Google Java编程风格指南
- Android命名规范-http://blog.youkuaiyun.com/vipzjyno1/article/details/23542617