文章目录
  1. 1. 开发规范
    1. 1.1. 1. 打印调试Log
    2. 1.2. 2. 代码缩进,使用四个空格代替一个Tab
    3. 1.3. 3. 命名类(classes)
    4. 1.4. 4. 命名接口(interface)
    5. 1.5. 5. 命名方法(methods)
    6. 1.6. 6. 命名变量(variables)
    7. 1.7. 7. 命名常量(constants)
    8. 1.8. 8. 命名资源文件(drawable folder)
    9. 1.9. 9. 命名布局文件(XML layout)
    10. 1.10. 10. 命名动画文件(anim folder)
    11. 1.11. 11. 命名资源ID(resourcesid)
    12. 1.12. 12. 命名layout中的id命名
    13. 1.13. 13. 命名styles.xml
    14. 1.14. 14. 命名colors.xml
    15. 1.15. 15. 约定俗成的英文缩写
    16. 1.16. 16.监听器使用匿名内部类
    17. 1.17. 17. 参考链接

Android 开发中类、方法、变量、资源等命名规则。

开发规范


1. 打印调试Log


DEBUG模式下打印调试log时,TAG的值统一使用如下格式

public static final String TAG = MyInfoAty.class.getSimpleName();


打印log时,格式如下

XLog.d(TAG, “上传图片返回=” + strMsg);


注意d表示打印debug信息,e表示打印error信息,相应地还有v, i, wtf

2. 代码缩进,使用四个空格代替一个Tab


3. 命名类(classes)


采用大驼峰命名法,尽量避免缩写,除非该缩写是众所周知的, 比如HTML,URL,如果类名称中包含单词缩写,则单词缩写的每个字母均应大写

| 类 | 描述 | 例如 |
| —————– | —————— | ————————————— |
| activity 类 | Activity为后缀标识 | 欢迎页面类WelcomeActivity |
| fragment类 | Fragment为后缀标识 | 首页列表类HomeListFragment |
| Adapter类 | Adapte 为后缀标识 | 新闻详情适配器NewDetailAdapter |
| 解析类 | Hlr为后缀标识 | 首页解析类HomePosterHlr |
| 公共方法类 | Tools或Manager为后缀标识 | 线程池管理类:ThreadPoolManager,日志工具类:LogTools |
| 数据库类 | 以DBHelper后缀标识 | 新闻数据库:NewDBHelper |
| Service类 | 以Service为后缀标识 | 时间服务TimeService |
| BroadcastReceive类 | 以Broadcast为后缀标识 | 时间通知TimeBroadcast |
| ContentProvider类 | 以Provider为后缀标识 | 日记DiaryProvider |
| 直接写的共享基础类 | 以Base开头 | BaseActivity,BaseFragment |

4. 命名接口(interface)


命名规则与类一样采用大驼峰命名法,多以Listener结尾,例如:interface LogoutDialogClickListener。

5. 命名方法(methods)


动词或动名词,采用小驼峰命名法例如:onCreate(), run()

| 方法 | 说明 |
| ———– | —————————————- |
| initXX() | 初始化相关方法,使用init为前缀标识,如初始化布局initView() |
| isXX() | checkXX()方法返回值为boolean型的请使用is或check为前缀标识 |
| getXX() | 返回某个值的方法,使用get为前缀标识 |
| processXX() | 对数据进行处理的方法,尽量使用process为前缀标识 |
| displayXX() | 弹出提示框和提示信息,使用display为前缀标识 |
| saveXX() | 与保存数据相关的,使用sav为e前缀标识 |
| resetXX() | 对数据重组的,使用reset前缀标识 |
| clearXX() | 清除数据相关的 |
| removeXXX() | 清除数据相关的 |
| drawXXX() | 绘制数据或效果相关的,使用draw前缀标识 |

6. 命名变量(variables)


采用小驼峰命名法。类中控件名称与xml布局id去掉了Activity名称之后的部分保持一致。(组件缩写_view的逻辑名称)

比如: 组件tv_share_coupon_detailed_txt_part_one对应的变量名tvDetailedTxtPartOne,其中share_coupon是ShareCouponAcitivity中去掉Activity之后的类名。

7. 命名常量(constants)


全部大写,采用下划线命名法。例如:MIN_WIDTH
其中常量名开头部分有如下约定
bundle中传入数值的键值,以EXTRA_开头 startActivityForResult
- 传入的REQUEST_CODE参数,以REQUEST_开头
- 返回的结果使用系统默认的常量值即可
APIKey文件中的常量以KEY_开头 网络请求助手类
- 请求API的方法中params参数中的键值以PARAM_开头
- 返回结果码(一般是整型)常量以RESULT_开头,比如RESULT_ERROR
刷新的常量以REFRESH_开头以TYPE结尾 默认值常量名以DEFAULT_开头

8. 命名资源文件(drawable folder)


全部小写,采用下划线命名法,加前缀区分。
命名模式:activity名称逻辑名称/common逻辑名称
如果有多种形态(如按钮等)除外,如btn_xx.xml(selector)

| 名称 | 功能 |
| ————— | ———————— |
| btnxx | 按钮图片使用btn整体效果(selector) |
| btn_xxnormal | 按钮图片使用btn正常情况效果 |
| btn_xxpress | 按钮图片使用btn点击时候效果 |
| bghead | 背景图片使用bg功能_说明 |
| def_searchcell | 默认图片使用def功能_说明 |
| icon_morehelp | 图标图片使用icon功能_说明 |
| seg_listline | 具有分隔特征的图片使用seg功能_说明 |
| selok | 选择图标使用se功能说明 |

命名后缀

| 后缀 | 说明 |
| ——– | ———————————– |
| unit | 在使用xml的tilemode来配图片时,element图片使用此后缀 |
| nor | 图片的状态,代表普通状态 |
| hl | 图片的状态,代表高亮状态 |
| press | 图片的状态,代表按下状态 |
| select | 图片的状态,代表其所占的view被选中 |
| unselect | 图片的状态,代表其所占的view没有被选中 |

9. 命名布局文件(XML layout)


全部小写,采用下划线命名法

1. Contentview命名, Activity默认布局,以去掉后缀的Activity类进行命名。不加后缀:activity
功能模块.xml,例如:activity_main.xml、activity_more.xml、activitysettings.xml。
2. Fragment命名:fragment
描述.xml,例如:fragmentmain.xml。
3. Dialog命名:dialog
描述.xml,例如:dialoghint.xml。
4. PopupWindow命名:ppw
描述.xml,例如:ppw_info.xml。
5. 列表项命名:listitem描述.xml,例如:list_itemcity.xml。
6. 包含项:include
模块.xml,例如:include_head.xml、include_bottom.xml。

10. 命名动画文件(anim folder)


全部小写,采用下划线命名法,加前缀区分

| 动画命名例子 | 规范写法 |
| —————– | ——- |
| fade_in | 淡入 |
| fade_out | 淡出 |
| push_down_in | 从下方推入 |
| push_down_out | 从下方推出 |
| push_left | 推向左方 |
| slide_in_from_top | 从头部滑动进入 |
| zoom_enter | 变形进入 |
| slide_in | 滑动进入 |
| shrink_tomiddle | 中间缩小 |

11. 命名资源ID(resourcesid)


全部小写,采用下划线命名法

* strings.xml,dimen.xml等中的id命名
- 命名模式:activity名称
功能模块名称逻辑名称/activity名称逻辑名称/common逻辑名称 (activity名称是指去掉了Acitivty字眼之后的名称)
- 最好可以使用common
逻辑名称,因为可以被共用
- dimen.xml中,使用activity名称注释,将文件内容区分开来
- strings.xml中,使用activity名称注释,将文件内容区分开来

12. 命名layout中的id命名


命名模式为:组件缩写_模块名称_view的逻辑名称

注意:页面组件名称应该和组件id名保持一致。
(目前java类中组件使用的是小驼峰命名法)

组件缩写详情如下

| 组件 | 缩写 |
| ——————– | ————– |
| TextView | tv |
| ImageView | iv |
| Button | btn |
| listView | lv |
| CheckBox | chk |
| RadioButton | rb |
| LineaLayout | ll |
| RelativeLayout | rl |
| ImageButton | imgbtn |
| EditText | et |
| ExpandableList | expandablelist |
| toggleButton | togglebtn |
| Spinner | spinner |
| ProgressBar | progressbar |
| WdbView | webview |
| LayoutView | lv |
| RelativeView | rv |
| analogClock | analogclock |
| DigtalClock | digtalclock |
| DatePicker | datepicker |
| TimePicker | timepicker |
| SeekBar | seekbar |
| AutoCompleteTextView | autocompletetv |
| ZoomControls | zoomctls |
| VideoView | videoview |
| RantingBar | rantingbar |
| Tab | tab |
| ScrollView | scrollview |
| MapView | mapview |

13. 命名styles.xml


将layout中不断重现的style提炼出通用的style通用组件,放到styles.xml中

14. 命名colors.xml

  • 将layout中不断重现的color提炼出来,直接以颜色名称命名,从而方便共用和自定义主题样式
  • 每个layout中特定使用的color值的命名,使用activity名称_颜色名称命名

15. 约定俗成的英文缩写

程序中使用单词缩写原则:不要用缩写,除非该缩写是约定俗成的。

下面为常见的英文单词缩写:

名称 缩写
average avg
background bg(主要用于布局和子布局的背景)
buffer buf
control ctrl
delete del
document doc
error err
escape esc
increment inc
infomation info
initial init
image img
Internationalization i18n
length len
library lib
message msg
password- pwd
position pos
server srv
string str
temp tmp
window win

16.监听器使用匿名内部类

17. 参考链接

文章目录
  1. 1. 开发规范
    1. 1.1. 1. 打印调试Log
    2. 1.2. 2. 代码缩进,使用四个空格代替一个Tab
    3. 1.3. 3. 命名类(classes)
    4. 1.4. 4. 命名接口(interface)
    5. 1.5. 5. 命名方法(methods)
    6. 1.6. 6. 命名变量(variables)
    7. 1.7. 7. 命名常量(constants)
    8. 1.8. 8. 命名资源文件(drawable folder)
    9. 1.9. 9. 命名布局文件(XML layout)
    10. 1.10. 10. 命名动画文件(anim folder)
    11. 1.11. 11. 命名资源ID(resourcesid)
    12. 1.12. 12. 命名layout中的id命名
    13. 1.13. 13. 命名styles.xml
    14. 1.14. 14. 命名colors.xml
    15. 1.15. 15. 约定俗成的英文缩写
    16. 1.16. 16.监听器使用匿名内部类
    17. 1.17. 17. 参考链接