编程风格
- 代码中尽量不要出现中文。注释和除外。代码中通过strings.xml引用来显示中文
- 控件声明放在activity级别,这样在activity其他地方可以使用
- 不要重用父类的handler,对应一个类的handler也不应该让其子类用到,否则会导致message.what冲突
- 在一个View.OnClickListener中处理所有的点击事件逻辑,这样看起来很集中和直观
- strings.xml中使用%1$s等实现字符串的通配
- 布局文件中的字体大小,都定义在dimens.xml中
- 有关margin和padding的值也都放在dimens.xml中
- 界面之间传值尽量使用intent方式。少用全局变量
- 不建议在布局文件中添加点击事件
- 数据类型转换一定要校验
- 使用常量代替枚举
- 实体不要在不同模块间共享,但是可以在统一模块下的不同页面共享
- 建议采用左括号与方法名称在同一行的代码格式来进行代码的编写和格式化。
- 业务稍微复杂一些,都有可能提炼一个BaseActivity或BaseFragment出来做为公共父类
- 类注释一定要写,重要的方法也要写方法注释。常量尽量写注释
- 编写SQL语句时,对于关键字使用全部大写。对于数据库元素(如表、列和视图)使用大小写混合。例如SELECT * FROM Table1
- 一个方法尽量不要超过30行,如果方法太长,说明当前方法业务逻辑已经非常复杂,那么就需要进行方法拆分,保证每个方法只做一件事。
- 一个方法的参数尽可能的不要超过4个
- 如果一个方法返回的是一个错误码,请使用异常,尽可能不要使用null,替代为异常或者使用空变量。如返回List则可以使用Collections.emptyList()
- 代码中不允许出现单独的数字,字符。如果需要使用数字或字符,则将它们按照含义封装为静态常量(for语句中除外)。
- 判断中如有常量,则应将常量置于判断式的右侧。如:if(true == isAdmin())
- 按钮要避免重复点击
- 使用静态变量方式实现界面间共享要慎重
- 尽量使用shape和selector
- 复杂布局使用RelativeLayout
- 自适应屏幕,使用dp替代px
- 使用animation-list制作动画效果
- 图片尽量分拆成多个可重用的图片
命名规范
驼峰命名法:除了首个单词首字母小写除外,其余所有单词所有首字母都要大写。
包的命名
包名一律小写, 少用缩写和长名。
规则:[com].[公司名/组织名].[项目名].[模块名/层级名称]
例如:com.google.gson
包名 | 描述 |
---|---|
com.xxx.xxx.base | 基础共享的类 |
com.xxx.xxx.view/widget | 自定义的View类等 |
com.xxx.xxx.activity | Activity类 |
com.xxx.xxx.fragment | Fragment类 |
com.xxx.xxx.adapter | 适配器类 |
com.xxx.xxx.utils | 工具类 |
com.xxx.xxx.vo | 界面显示的数据对象 |
com.xxx.xxx.service | Service服务 |
com.xxx.xxx.receiver | BroadcastReceiver类 |
com.xxx.xxx.db | 数据库操作类 |
com.xxx.xxx.persenter | 中间对象 |
com.xxx.xxx.model | 模型类 |
类的命名
Android中类的命名与JAVA开发采用相同的规范。采用大驼峰命名法,所有单词的首字母大写。
类 | 示例 |
---|---|
Activity | xxxActivity.java |
Service | xxxService.java |
Fragment | xxxFragment.java |
BroadcastReceiver | xxxReceiver.java |
ContentProvider | xxxProvider.java |
Adapter | xxxAdapter.java |
Persenter | xxxPersenter.java |
Handler | xxxHandler.java |
公共父类 | BaseXxx.java |
接口 | xxxInter.java |
接口实现类 | xxxImpl.java |
工具类 | xxxUtil.java或xxxManager.hava |
数据库类 | xxxDBHelper.java |
解析类 | xxxParser.java |
接口的命名
接口名称以 I 为前缀或者以 able,ible,er 为后缀,如果有多个单词,每个单词首字母大写。例如:IBinder
事件监听器命名
以 On 开头,如果有多个单词,每个单词首字母大写。例如:OnClickListener
方法的命名
方法名通常是动词或动词短语。第一个单词的首字母小写,其后单词的首字母大写。
方法 | 描述 |
---|---|
initXX() | 初始化相关方法 |
isXX()/checkXX() | 方法返回值为boolean型的请使用is或check为前缀标识 |
getXX() | 返回某个值的方法 |
handleXX() | 对数据进行处理的方法 |
displayXX()/showXX() | 弹出提示框和提示信息 |
saveXX() | 与保存数据相关的 |
resetXX() | 对数据重置的 |
clearXX() | 清除数据相关的 |
removeXX() | 移除数据相关的 |
drawXX() | 绘制数据或效果相关的 |
变量的命名
只在代码块的开始处声明变量;
变量名不应以下划线或美元符号开头;
尽量避免单个字符的变量名;
集合类型变量,例如数组和矢量,应采用复数命名或使用表示该集合的名词作后缀。
成员变量
以小写字母 m 开头,其余所有单词首字母都要大写,例如:mFile
静态变量
以小写字母 s 开头,其余所有单词首字母都要大写,例如:sInstance
局部变量
指方法中的变量和方法的参数。第一个单词的首字母小写,其后单词的首字母大写,即使局部变量是final类型的,也不应该把它视为常量,自然也不能用常量的规则去命名。
临时变量
临时变量通常被取名为i,j,k,m和n,它们一般用于整型;c,d,e,它们一般用于字符型
常量的命名
全部采用大写,单词之间用下划线连接,例如:MAX_SIZE
控件的命名
控件缩写+控件逻辑,控件逻辑首字母大写。类中控件名称必须与xml布局id保持一致。
常用控件的缩写:
控件 | 缩写 | 示例 |
---|---|---|
LinearLayout | ll | llFriend |
RelativeLayout | rl | rlMessage |
FrameLayout | fl | flCart |
TableLayout | tl | tlCourse |
TextView | tv | tvName |
EditText | et | etAddress |
Button | btn | btnLogin |
ImageView | iv | ivAvatar |
ListView | lv | lvGoods |
RecyclerView | rv | rvStudent |
GridView | gv | gvPhoto |
ImageButton | ibtn | ibtnPlay |
CheckBox | chk | chkHobby |
RadioButton | rb | rbSex |
ProgressBar | pb | pbLoading |
WebView | wv | wvNews |
ToggleButton | tb | tbXXX |
Spinner | spn | spnXXX |
Menu | mnu | mnuXXX |
资源的命名
全部采用小写,单词之间使用下划线分割。
控件ID的命名
采用控件缩写_控件功能的格式。例如:btn_login
drawable的命名
采用前缀_逻辑名称{_后缀}的格式。以下为常用的命名格式:
- 图标类,使用 ic 前缀。例如:ic_logo.png
- 背景类,使用 bg 前缀。例如:bg_splash.png
- 分隔类,使用 div 前缀。
- 默认类,使用 def 前缀。
- 选择器类,使用 selector 前缀。
- 默认状态,使用 normal 后缀。
- 按下状态,使用 pressed 后缀
- 选中状态,使用 selected 后缀。
- 禁用状态,使用 disable 后缀。
layout的命名
采用组件类型_功能的格式。以下为常用的命名格式:
类型 | 格式 | 示例 |
---|---|---|
共用布局 | common_xxx | common_date.xml |
嵌入布局 | inc_xxx | inc_topbar.xml |
Activity布局 | activity_xxx | activity_main.xml |
Fragment布局 | fragment_xxx | fragment_settings.xml |
Dialog布局 | dialog_xxx | dialog_update.xml |
PopupWindow布局 | ppw_xxx | ppw _info.xml |
ListView的Item布局 | item_list_xxx | item_list_house.xml |
GridView的Item布局 | item_grid_xxx | item_grid_photo.xml |
ListView的HeaderView布局 | header_list_xxx | – |
ListView的FooterView布局 | footer_list_xxx | – |
colors的命名
采用前缀_逻辑名称{_后缀}的格式。以下为常用的命名格式:
- 背景颜色,使用 bg 前缀
- 文本颜色,使用 text 前缀
- 分隔线颜色,使用 div 前缀
- 多种状态下
- 默认状态颜色,使用 normal 后缀
- 按下状态颜色,使用 pressed 后缀
- 选中状态颜色,使用 selected 后缀
- 禁用状态颜色,使用 disabled 后缀
strings的命名
采用类型_逻辑名称的格式。
类型 | 格式 | 示例 |
---|---|---|
界面标题 | title_页面 | title_settings |
按钮文字 | btn_按钮事件 | btn_login |
标签文字 | label_标签文字 | label_password |
选项卡文字 | tab_选项卡文字 | label_login |
消息框文字 | toast_消息 | toast_exit |
编辑框提示文字 | hint_提示信息 | hint_password |
图片描述文字 | desc_描述 | desc_avatar |
对话框文字 | dialog_文字 | dialog_info |
Menu的Item文字 | action_文字 | – |
anim的命名
采用动画类型_动画方向的格式。
- fade_in,淡入
- fade_out,淡出
- push_down_in,从下方推入
- push_down_out,从下方推出
- slide_in_from_top,从头部滑入
- zoom_enter,变形进入
- push_left,推向左方
- shrink_to_middle,中间缩小
styles的命名
采用大驼峰命名法。每个单词首字母大写。
以上为个人习惯整理出来的规范,并不适用于每个人,如需转载请标明原文出处!