赵雅智_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
tv LinearLayout
ll
ImageView
iv ListView
lv TableLayout
tl
ProgressBar
pb
EditText
et AbsoluteLayout
al
ScrollView
sv
CheckBox
cb FrameLayout
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文件夹下的文件名称添加前缀
  • 数据一定要效验,比如字符型转数字型,假设转换失败一定要有缺省值;服务端响应数据是否有效推断 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。