android命名规范
Android 开发规范 (陈杨)
(一)注意事项
1. 编码方式统一用UTF-8. Android Studio默认已是UTF-8,只要不去改动它就可以了。
2. 缩进统一为4个空格,将Tab size设置为4则可以保证tab键按4个空格缩进。另外,不要勾选上Use tab character,可以保证切换到不同tab长度的环境时还能继续保持统一的4个空格的缩进样式。
3. 花括号不要单独一行,和它前面的代码同一行。而且,花括号与前面的代码之间用一个空格隔开。
4. 空格的使用
if、else、for、switch、while等逻辑关键字与后面的语句留一个空格隔开。
5. 空行的使用
将逻辑相关的代码段用空行隔开,以提高可读性。空行也只空一行,不要空多行。在以下情况需用一个空行:
· 两个方法之间
· 方法内的两个逻辑段之间
· 方法内的局部变量和方法的第一条逻辑语句之间
· 常量和变量之间
6. 当一个表达式无法容纳在一行内时,可换行显示,另起的新行用8个空格缩进。
7. 一行声明一个变量,不要一行声明多个变量,这样有利于写注释。
8. 行宽设置为100,设置格式化时自动断行到行宽位置。
9. 使用快捷键进行代码自动格式化。
Windows:CTRL+ALT+L
Mac:OPTION+COMMAND+L
10. 一个方法最多不要超过40行代码。
11. 范围型的常量用枚举类定义,而不要直接用整型或字符,这样可以减少范围值的有效性检查。
12. 文字大小的单位统一用sp,元素大小的单位统一用dp。
13. 应用中的字符串统一在strings.xml中定义,然后在代码和布局文件中引用。
14. 颜色值统一在colors.xml中定义,然后在代码和布局文件中引用。另外,不要在代码和布局文件中引用系统的颜色,除了透明。
(二)命名规范
Java文件命名规范
l Activity (模块名+功能名+Activity)
l Adapter (模块名+功能名+Adapter)
l 解析类 (Hlr为后缀标识)
l 公共方法 (Tools)
l 数据库 (Db ,Sp 为后缀标识)
l Service (Service 为后缀标识)
l BroadcastReceive (Broadcast 为后缀标识)
l ContentProvider (Provider为后缀标识)
l 共享基础类(Base开头)
l 实体类 (Model)
l 接口 (以lmpl为后缀)
l AppApplication 定义Application类
l AppConfig 定义配置数据(常量)
资源文件命名规范 (小写)
Layout
l Activity act_activity所在包的page为中缀_功能名称
l Fragment fra_所在的activity_功能名称
l Adpter adpter_功能模块_tem
l Item item_类型_ /item_adpter_
l Dialog dlg_
l PopupWindow ppw_
l Include include_
l Merge merge_
l 组合控件 comb_功能
l 动态布局添加 dyn_
res目录下的命名规范(小写)
Drawable
l 图标图片 ico_
l 按钮图片(前缀{_控件}{_范围}{_后缀},控件、范围、后缀可选,但控件和范围至少要有一个)
按压背景 btn_效果(选中效果) btn_正常效果_normal btn_点击时的效果_press
常用前缀
默认背景 def_功能_说明
背景 bg_功能_说明
分割特征 div_功能_说明
选择 sel_功能_说明
常用后缀:
nor 图片的状态,代表普通状态
hl 图片的状态,代表高亮状态
press 图片的状态,代表按下状态
Select 图片的状态,代表其所占的view被选中
unselect 图片的状态,代表其所占的view没有被选中
l 绘图 shape
l xml动画(动画类型_动画方向。)
fade_in,淡入
fade_out,淡出
push_down_in,从下方推入
push_down_out,从下方推出
slide_in_from_top,从头部滑动进入
zoom_enter,变形进入
shrink_to_middle,中间缩小
Strings的命名
类型_{范围_}功能,范围可选。以下为几种常用的命名:
l 页面标题,命名格式为:title_页面
l 按钮文字,命名格式为:btn_按钮事件
l 标签文字,命名格式为:label_标签文字
l 选项卡文字,命名格式为:tab_选项卡文字
l 消息框文字,命名格式为:toast_消息
l 编辑框的提示文字,命名格式为:hint_提示信息
l 图片的描述文字,命名格式为:desc_图片文字
l 对话框的文字,命名格式为:dialog_文字
l menu的item文字,命名格式为:action_文字
Colors的命名
前缀{_控件}{_范围}{_后缀},控件、范围、后缀可选,但控件和范围至少要有一个。
l 背景颜色,添加bg前缀
l 文本颜色,添加text前缀
l 分割线颜色,添加div前缀
l 区分状态时,默认状态的颜色,添加normal后缀
l 区分状态时,按下时的颜色,添加pressed后缀
l 区分状态时,选中时的颜色,添加selected后缀
l 区分状态时,不可用时的颜色,添加disable后缀
Style的命名 (单词首字母大写 ,以Style结尾)
参照Drawable的命名方式,以Style结尾
l 控件的命名 控件缩写_{范围_}意义,范围可选,只在有明确定义的范围内才需要加上。
如: txt_header_title btn_login
|
控件 |
缩写 |
|
LayoutView |
lv |
|
RelativeView |
rv |
|
TextView |
tv |
|
Button |
btn |
|
ImageButton |
imgBtn |
|
ImageView |
mgView 或则 iv |
|
CheckBox |
chk |
|
RadioButton |
rdoBtn |
|
analogClock |
anaClk |
|
DigtalClock |
dgtClk |
|
DatePicker |
dtPk |
|
EditText |
edtTxt |
|
TimePicker |
tmPk |
|
toggleButton |
tglBtn |
|
ProgressBar |
proBar |
|
SeekBar |
skBar |
|
AutoCompleteTextView |
autoTxt |
|
ZoomControls |
zmCtl |
|
VideoView |
vdoVi |
|
WdbView |
webVi |
|
RantingBar |
ratBar |
|
Tab |
tab |
|
Spinner |
spn |
|
Chronometer |
cmt |
|
ScollView |
sclVi |
|
TextSwitch |
txtSwt |
|
ImageSwitch |
imgSwt |
|
listView |
lVi 或则lv |
|
ExpandableList |
epdLt |
|
MapView |
mapVi |
方法的命名
|
方法 |
说明 |
|
initXX() |
初始化相关方法,使用init为前缀标识,如初始化布局initView() |
|
isXX() |
checkXX()方法返回值为boolean型的请使用is或check为前缀标识 |
|
getXX() |
返回某个值的方法,使用get为前缀标识 |
|
processXX() |
对数据进行处理的方法,尽量使用process为前缀标识 |
|
displayXX() |
弹出提示框和提示信息,使用display为前缀标识 |
|
saveXX() |
与保存数据相关的,使用sav为e前缀标识 |
|
resetXX() |
对数据重组的,使用reset前缀标识 |
|
clearXX() |
清除数据相关的 |
|
removeXXX() |
清除数据相关的 |
|
drawXXX() |
绘制数据或效果相关的,使用draw前缀标识 |
变量
(variables)采用小驼峰命名法。类中控件名称必须与xml布局id保持一致。
常量
(Constants)全部大写,采用下划线命名法.例如:MIN_WIDTH
常见缩写下面为常见的英文单词缩写:
|
名称 |
缩写 |
|
icon |
ic (主要用在app的图标) |
|
color |
cl(主要用于颜色值) |
|
divider |
di(主要用于分隔线,不仅包括Listview中的divider,还包括普通布局中的线) |
|
selector |
sl(主要用于某一view多种状态,不仅包括Listview中的selector,还包括按钮的selector) |
|
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 |
wnd(win) |
程序中使用单词缩写原则:不要用缩写,除非该缩写是约定俗成的。
其他总结:
1.java代码中不出现中文,最多注释中可以出现中文
2.局部变量命名、静态成员变量命名
只能包含字母,单词首字母除第一个外,都为大写,其他字母都为小写
3.常量命名
只能包含字母和_,字母全部大写,单词之间用_隔开
4.图片尽量分拆成多个可重用的图片
5.服务端可以实现的,就不要放在客户端
6.引用第三方库要慎重,避免应用大容量的第三方库,导致客户端包非常大
7.处理应用全局异常和错误,将错误以邮件的形式发送给服务端
8.图片的.9处理
9.使用静态变量方式实现界面间共享要慎重
10.Log(系统名称模块名称接口名称,详细描述)
11.单元测试(逻辑测试、界面测试)
12.不要重用父类的handler,对应一个类的handler也不应该让其子类用到,否则会导致message.what冲突
13.activity中在一个View.OnClickListener中处理所有的逻辑
14.strings.xml中使用%1$s实现字符串的通配
15.如果多个Activity中包含共同的UI处理,那么可以提炼一个CommonActivity,把通用部分叫由它来处理,其他activity只要继承它即可
16.使用button+activitgroup实现tab效果时,使用Button.setSelected(true),确保按钮处于选择状态,并使activitygroup的当前activity与该button对应
17.如果所开发的为通用组件,为避免冲突,将drawable/layout/menu/values目录下的文件名增加前缀
18.数据一定要效验,例如
字符型转数字型,如果转换失败一定要有缺省值;
服务端响应数据是否有效判断
快捷键和技巧
参考Google I/O 2015的代码结构,PBF具体可以这样做:
src
└─com
└─domain
└─app
│ Config.java 配置数据、常量
│
├─framework
│ 定义interface以及相关基类
│
├─io
│ 数据定义(model)、数据操作(比如json解析,但不包括db操作)
│
├─model
│ 定义model(数据结构以及getter/setter、compareTo、equals等等,不含复杂操作)
│ 以及modelHelper(提供便于操作model的api)
│
├─provider
│ 实现ContentProvider,及其依赖的db操作
│
├─receiver
│ 实现Receiver
│
├─service
│ 实现Service(比如IntentService),用于在独立线程中异步do stuff
│
├─ui
│ 实现自定义view和widget,相关的Adapter也放这里
│
├─util
│ 实现工具类,提供静态方法
│
├─feature1
│ Item.java 定义model
│ ItemHelper.java 实现modelHelper
│ feature1Activity.java 定义UI
│ feature1DAO.java 私有db操作
│ feature1Utils.java 私有工具函数
│ ...其它私有class
│
├─...其它feature
android命名规范的更多相关文章
- Android 命名规范 (提高代码可以读性)
android文件众多,根据名称来辨别用途很重要,因此命名要规范 这篇文章可参考:Android 命名规范 (提高代码可以读性) 刚接触android的时候,命名都是按照拼音来,所以有的时候想看懂命名 ...
- Android 命名规范 (提高代码可以读性) 转
转自:http://blog.csdn.net/vipzjyno1/article/details/23542617 刚接触android的时候,命名都是按照拼音来,所以有的时候想看懂命名的那个控件 ...
- [转] Android 命名规范 (提高代码可以读性)
Android命名规范编码习惯 刚接触android的时候,命名都是按照拼音来,所以有的时候想看懂命名的那个控件什么是什么用的,就要读一遍甚至好几遍才知道,这样的话,在代码的 审查和修改过程中就会浪费 ...
- Android 命名规范 (转)
刚接触android的时候,命名都是按照拼音来,所以有的时候想看懂命名的那个控件什么是什么用的,就要读一遍甚至好几遍才知道,这样的话,在代码的审查和修改过程中就会浪费不少不必要的时间.如果就是我一个人 ...
- [旧][Android] 命名规范和编码规范
备注 原发表于2016.05.07,资料已过时,仅作备份,谨慎参考 前言 本文适用范围:已参加项目开发的人 写这篇文章的目的是为方便地对代码进行管理,让整个团队的代码规范化.这里的部分规定可能和你在其 ...
- 第四章 android 命名规范和编码规范
书里面讲的比较常见,单个人也是有不同的观点: 因为android绝大部分使用java开发的,因此java相关规范适用于android: Google Style: 英文地址:http://google ...
- Android命名规范(重点讲解:包名)
Android程序开发中,使用规范的命名有益于程序的开发和后期阅读.本文主要对Android程序包名的定义做详细介绍,并附带一些简单的命名规则. 一.标识符命名方法1 .小驼峰命名法,除首单词外,其余 ...
- Android 命名规范和编码规范
简明概要 多写注释 一.关于命名规范 对于开发项目来说肯定是要有统一的规范,然而命名规范需要做到哪几点呢? 答: 首先,不能反人类. 再来就是,要望文而知其意. 下面就来说说具体该怎么去规范我们的代 ...
- Android命名规范(自定义)
此规范参考自android源码,并加以改进,仅供个人使用,如果你觉得还有可取之处,可以参考下,以后有好的规则,再补充 总体规范: 类名要清晰,能反映出这个类的作用,最好能达到见名知义的效果 方法名要使 ...
随机推荐
- RHEL7服务管理
对于学习过红帽RHEL6的系统或已经习惯使用service.chkconfig等命令来管理系统服务的用户可能要郁闷了, 因为在红帽RHEL7系统中管理服务的命令变成了“systemctl”,但使用方法 ...
- 10位IT领袖给应届毕业生的10条忠告
10位IT领袖给应届毕业生的10条忠告,在走向独立和自主的伟大征程中,吸取他们的经验. 在毕业生们迈出象牙塔之时,他们应该听从哪些人的建议?在走向独立和自主的伟大征程中,他们该吸取哪些教训?听一听各领 ...
- Android之开发杂记(三)
一.popup 弹出框 在onCreate中创建时异常 Unable to add window -- token null is not valid; is your activity runnin ...
- 《c程序设计语言》读书笔记--统计总的字符数,打印能打印的最多字符
#include <stdio.h> #define MAXLINE 10 int getline(char line[],int maxline); void copy(char to[ ...
- ListView(3)关于listview滚动事件,何时滚动到顶部或底部
给listview设置一个OnScrollListener就可 ListView.OnScrollListener scrollListener = new ListView.OnScrollList ...
- CVS数据的导入和导出
2.CSV导入/导出测试 package junit.test; import java.io.File; import java.util.ArrayList; import java.util.L ...
- iOS-APP中添加启动界面
iOS,非常高兴的又回到了这个领域.纠结的就业之路...找工作的这段时间里,原本以为是iOS的游戏开发,却一直只有后台的offer,到Android,最后正式上班的时候却被告知调到了iOS开发,当然不 ...
- Linux 查看端口占用并杀掉
1. 查看端口号占用情况: netstat -apn|grep 80 tcp 0 0 10.65.42.27:80 172.22.142.20:627 ...
- 邦定lua函数到C里做为回调
1, int ref = luaL_ref(L, LUA_REGISTRYINDEX); //把栈顶的obj 存在lua的表里面,返回一个唯一的引用,(栈顶的obj被自动清除),,(这个引用作为回 ...
- 【Todo】深入PHP内核系列
看到一个<深入PHP内核>系列,Todo: http://www.csdn.net/article/2014-09-15/2821685-exploring-of-the-php [问底] ...