赵雅智_Android编码规范
注释
导入mycodetemplates.xml统一注释样式
需要加注释的地方
- 类注释(必加)
- 方法注释(必加)
- 块注释主要是数据结构和算法的描述(必加)
- 类成员变量和常量注释(选择性添加)
- 单行注释,主要是case的判断(选择性添加)
声明
类和接口声明
下表描述了类和接口声明的各个部分以及它们出现的先后次序。
类/接口声明的各部分 |
注解 |
|
---|---|---|
1 |
类/接口文档注释(/**……*/) |
类的功能等信息 |
2 | 类的(静态)变量 |
首先是类的公共变量,随后是保护变量,再后是包一级别的变量(没有访问修饰符,access modifier),最后是私有变量。 |
3 | 实例变量 |
首先是公共级别的,随后是保护级别的,再后是包一级别的(没有访问修饰符),最后是私有级别的。 |
4 | 方法 |
这些方法应该按功能,而非作用域或访问权限,分组。例如,一个私有的类方法可以置于两个公有的实例方法之间。其目的是为了更便于阅读和理解代码。 |
5 | 构造器 |
变量声明
推荐一行一个声明,因为这样以利于写注释,使用制表符:对齐
int level; // indentation level int size; // size of table char username; // username
|
命名规范
.java代码中不出现中文,最多注释中可以出现中文
包命名
采用反域名命名规则,全部使用小写字母。一级包名为com,二级包名为hbsi,三级包名根据应用进行命名,四级包名为模块名或层级名
例如:com.hbsi.education.activity
目录结构
以[com].[hbsi].[项目名]. [组件].的方式命名:如下图 所示
com |
hbsi |
education |
activity |
common |
|||
adapter |
|||
service |
|||
parser |
|||
bean |
|||
utils |
|||
dao |
|||
manager |
|||
receiver |
类命名
采用大驼峰命名法,尽量避免缩写,除非该缩写是众所周知的, 比如HTML,URL,如果类名称中包含单词缩写,则单词缩写的每个字母均应大写。
继承自系统组件类的命名,后缀必须明确表示出系统组件的类
- Activity类后缀使用Act
- Service类后缀使用Service
- BroadcaseReceiver类后缀使用Receiver
- ContentProvider使用Provider
- Adapter类后缀使用adpter
- 逻辑处理类后缀使用mgr
- 数据库类后缀使用DBHelper
接口命名
采用大驼峰命名法,多以able或ible结尾,如interface Runna ble ;interface Accessible 。
方法命名
动词或动名词,采用小驼峰命名法 例如:onCreate(),run()
- initXXX()
初始化相关方法,使用init为前缀标识 - isXXX()
checkXXX() 方法返回值为boolean型的请使用is或check为前缀标识 - getXXX()
返回某个值的方法,使用get为前缀标识 - processXXX() 对数据进行处理的方法,尽量使用process为前缀标识
- postXXX() 传回数据,使用post为前缀标识
- saveXXX()
与保存数据相关的,使用sav为e前缀标识 - resetXXX()
对数据重组的,使用reset前缀标识 - clearXXX()removeXXX()
清除数据相关的,使用clear或remove为前缀标识 - drawXXX()
绘制数据或效果相关的,使用draw前缀标识
需要注意的一点,所有的getter和setter方法都使用系统自动生成的方法生成。
变量命名
采用小驼峰命名法。类中控件名称必须与xml布局id保持一致。
View变量命名:控件类型描述 + 意义描述
其中系统控件中在前缀中体现控件类型,比如tvName如下所示:
组件名称 |
前缀 | 组件名称 |
前缀 |
组件名称 |
前缀 |
---|---|---|---|---|---|
Button |
btn |
RadioButton |
Rb | RelativeLayout |
rl |
ImageButton |
ibtn |
TextView |
tv | LinearLayout |
ll |
ImageView |
iv | ListView |
lv | TableLayout |
tl |
ProgressBar |
pb |
EditText |
et | AbsoluteLayout |
al |
ScrollView |
sv |
CheckBox |
cb | FrameLayout |
fl |
注:绝对不允许出现,变量首字母大写和有下划线的情况出现,常量命名除外。
用统一的量词通过在结尾处放置一个量词,就可创建更加统一的变量,它们更容易理解,也更容易搜索。例如,请使用strCustomerFirst和strCustomerLast,而不要使用strFirstCustomer和strLastCustomer。
量词列表:量词后缀说明
- First
一组变量中的第一个 - Last
一组变量中的最后一个 - Next
一组变量中的下一个变量 - Prev
一组变量中的上一个 - Cur
一组变量中的当前变量
常量
XML文件(布局文件)
- Activity默认布局,加上前缀act_
- Activity子布局,加上前缀act_,追加父布局名称和子布局功能说明。
资源命名
资源的命名必须以全部单词小写,单词间以下划线分割并且使用名词或名词词组,即使用 模块名_功能名称 来命名,公共的资源使用 common_模块名_功能名称。
btn_login_normal |
按钮图片使用btn_功能_说明 |
bg_head |
背景图片使用bg_功能_说明 |
def_search_cell |
默认图片使用def_功能_说明 |
icon_more_help |
图标图片使用icon_功能_说明 |
seg_list_line |
具有分隔特征的图片使用seg_功能_说明 |
sel_ok |
选择图标使用sel_功能_说明 |
动画文件(anim包)
全部小写,采用下划线命名法,加前缀区分。
动画命名例子 |
规范写法 |
备注 |
click_head_left |
点击背景切换动画使用click前缀标识 |
|
bg_shape_rectangle |
背景自定义图形使用bg前缀标识 |
|
show_shopcar_add |
小动画效果使用show前缀标识 |
|
资源ID命名
大小写规范与方法名一致,采用小驼峰命名法。命名规范为“资源控件的缩写
注意:页面控件名称应该和控件id名保持一致
strings.xml中的id命名
命名模式:
activity名称_功能模块名称_逻辑名称
activity名称_逻辑名称/common_逻辑名称
strings.xml中,使用activity名称注释,将文件内容区分开来
drawable中的图片命名
命名模式:activity名称_逻辑名称/common_逻辑名称
开发注意事项
- 将layout中不断重现的style提炼出通用的style通用组件,放到styles.xml中;
- 图片尽量分拆成多个可重用的图片
- 图片尽量进行.9处理
- 服务端可以实现的,就不要放在客户端
- 引用第三方库要慎重,避免应用大容量的第三方库,导致客户端包非常大
- 使用静态变量方式实现界面间共享要慎重
- Log(系统名称 模块名称 接口名称,详细描述)
- 单元测试(逻辑测试、界面测试)
- 不要重用父类的handler,对应一个类的handler也不应该让其子类用到,否则会导致message.what冲突
- activity中在一个View.OnClickListener中处理所有的逻辑
- strings.xml中使用%1$s实现字符串的通配
- 如果多个Activity中包含共同的UI处理,那么可以提炼一个CommonActivity,把通用部分叫由它来处理,其他activity只要继承它即可
- 使用button+activitgroup实现tab效果时,使用Button.setSelected(true),确保按钮处于选择状态,并使activitygroup的当前activity与该button对应
- 如果所开发的为通用组件,为避免冲突,将drawable/layout/menu/values目录下的文件名增加前缀
- 数据一定要效验,例如字符型转数字型,如果转换失败一定要有缺省值;服务端响应数据是否有效判断
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。