首页 > 代码库 > 赵雅智_Android编码规范

赵雅智_Android编码规范

凝视 

导入mycodetemplates.xml统一凝视样式

须要加凝视的地方

  1. 类凝视(必加)
  2. 方法凝视(必加)
  3. 块凝视主要是数据结构和算法的描写叙述(必加)
  4. 类成员变量和常量凝视(选择性加入)
  5. 单行凝视,主要是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前缀标识

须要注意的一点,全部的gettersetter方法都使用系统自己主动生成的方法生成。



变量命名

採用小驼峰命名法。类中控件名称必须与xml布局id保持一致。

View变量命名:控件类型描写叙述  + 意义描写叙述

当中系统控件中在前缀中体现控件类型,比方tvName例如以下所看到的:


组件名称
前缀组件名称
前缀
组件名称
前缀
Button
btn
RadioButton        
Rb       RelativeLayout       
rl         
ImageButton        
ibtn         
TextView
tvLinearLayout
ll
ImageView
ivListView
lvTableLayout
tl
ProgressBar
pb
EditText
etAbsoluteLayout
al
ScrollView
sv
CheckBox
cbFrameLayout
fl


 注:绝对不同意出现,变量首字母大写和有下划线的情况出现,常量命名除外。

用统一的量词通过在结尾处放置一个量词,就可创建更加统一的变量,它们更easy理解,也更easy搜索。比如,请使用strCustomerFirst和strCustomerLast,而不要使用strFirstCustomer和strLastCustomer。

量词列表:量词后缀说明

  • First  一组变量中的第一个
  • Last   一组变量中的最后一个
  • Next   一组变量中的下一个变量
  • Prev   一组变量中的上一个
  • Cur    一组变量中的当前变量

常量

所有大写,採用下划线命名法.比如:MIN_WIDTH


XML文件(布局文件)

所有小写,採用下划线命名法
  • Activity默认布局,加上前缀act_
  • Activity子布局,加上前缀act_,追加父布局名称和子布局功能说明。
比如:Activity默认布局:act_homeposter.xml   子布局为item_homeposter_poster.xml

资源命名

资源的命名必须以所有单词小写,单词间下面划线切割而且使用名词或名词词组,即使用 模块名_功能名称 来命名,公共的资源使用 common_模块名_功能名称。

btn_login_normal

button图片使用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处理
  • 服务端能够实现的,就不要放在client
  • 引用第三方库要谨慎,避免应用大容量的第三方库,导致client包很大
  • 使用静态变量方式实现界面间共享要谨慎
  • 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文件夹下的文件名称添加前缀
  • 数据一定要效验,比如字符型转数字型,假设转换失败一定要有缺省值;服务端响应数据是否有效推断 

赵雅智_Android编码规范