赵雅智_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 |
注:绝对不同意出现,变量首字母大写和有下划线的情况出现,常量命名除外。
用统一的量词通过在结尾处放置一个量词,就可创建更加统一的变量,它们更easy理解,也更easy搜索。比如,请使用strCustomerFirst和strCustomerLast,而不要使用strFirstCustomer和strLastCustomer。
量词列表:量词后缀说明
- First 一组变量中的第一个
- Last 一组变量中的最后一个
- Next 一组变量中的下一个变量
- Prev 一组变量中的上一个
- Cur 一组变量中的当前变量
常量
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编码规范的更多相关文章
- 赵雅智_android多线程下载带进度条
progressBar说明 在某些操作的进度中的可视指示器,为用户呈现操作的进度,还它有一个次要的进度条,用来显示中间进度,如在流媒体播放的缓冲区的进度. 一个进度条也可不确定其进度.在不确定模式下, ...
- 赵雅智_Android案例_刮刮乐
实现效果 主要代码 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns ...
- 赵雅智_Android的getResources()资源引用
今天做一个Android的刮刮乐项目.里面用到非常多的地方用到了getResources. <span style="font-size:12px;"> // 获得图片 ...
- 赵雅智_android获取本机运营商,手机号部分能获取
手机号码不是全部的都能获取.仅仅是有一部分能够拿到. 这个是因为移动运营商没有把手机号码的数据写入到sim卡中.SIM卡仅仅有唯一的编号.供网络与设备 识别那就是IMSI号码,手机的信号也能够说是通过 ...
- 赵雅智_android_frame动画
在開始实例解说之前,先引用官方文档中的一段话: Frame动画是一系列图片依照一定的顺序展示的过程,和放电影的机制非常相似.我们称为逐帧动画.Frame动画能够被定义在XML文件里,也能够全然编码实现 ...
- 赵雅智_service电话监听2加接通电话录音
步骤: 创建CallStateService继承Service 取得电话服务 监听电话动作 电话监听的对象 没有电话时 停止刻录 重设 刻录完毕一定要释放资源 电话响铃时 从麦克风採集声音 内容输出格 ...
- 赵雅智_ContentProvider
ContentProvider介绍 ContentProvider是不同应用程序之间进行交换数据的标志API 也就是说:一个应用程序通过ContentProvider暴露自己的数据操作接口,那么无论该 ...
- 赵雅智_Fragment生命周期
官网帮助文档链接: http://developer.android.com/guide/components/fragments.html 主要看两张图.和跑代码 一,Fragment的生命周 w ...
- 赵雅智:js知识点汇总
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhemhpMjEyOQ==/font/5a6L5L2T/fontsize/400/fill/I0 ...
随机推荐
- hibernate它 10.many2many单向
在前文hibernate之5.many2one单向提到多对多关系,表结构设计是基于中间表来实现, 以下以用户与角色(多对多)为例,在Hibernate是怎样操作的 表结构设计: 类图: CRUD; S ...
- LeetCodeOJ. Longest Common Prefix
试题请參见: https://oj.leetcode.com/problems/longest-common-prefix/ 题目概述 Write a function to find the lon ...
- Oracle 六闪回技术,flashback
Flashback 技术基于Undo segment基于内容的, 因此,限制UNDO_RETENTON参数. 要使用flashback 特征,您必须启用自己主动撤销管理表空间. 在Oracle 11g ...
- HDU 4864Task(更多的联合培训学校1)(贪婪)
职务地址:pid=4864">HDU4864 这题又是一上来觉得是最小费用流,可是边太多.果然,敲完交上去后不断TLE.. 小优化了两次也没过. . . sad.. 后来看了题解才发现 ...
- Android:ViewPager扩展的具体解释——导航ViewPagerIndicator(有图片缓存,异步加载图片)
我们已经用viewpager该. github那里viewpager扩展,导航风格更丰富.这个开源项目ViewPagerIndicator.非常好用,但样品是比较简单,实际用起来是非常不延长.例如,在 ...
- 《javascript高级编程》读书笔记(两)javascript基本概念
第三章:基本概念 ECMAScript那里5种简单数据类型(也称基本数据类型):Undefined\Null\Boolean\Number\String,另一种复杂数据类型--Object,Objec ...
- Android 常规任务的高度【schedule】与【scheduleAtFixedRate】差额
于android计划定期任务有两种方法 1.schedule 2.scheduleAtFixedRate 这两种方法的差别在于 首次调用时间(Date when)这个參数 <span style ...
- Android做法说明(3)---Fragment使用app袋或v4包解析
Android做法说明(3)---Fragment使用app袋或v4包解析 1)问题简述 相信非常多的朋友在调用Fragment都会遇到以下的情况: watermark/2/text/aHR0cDov ...
- Maven直接部署Web应用Tomcat
1. 下载解压版tomcat,并配置环境变量.所以tomcat你可以成功启动. 使用版本解压tomcat可以方便查看tomcat的后台输出的出错信息,便于调试. 2. 给tomcat配置用户名密码. ...
- 解决 Mybatis 元素类型为 "resultMap" 的内容必须匹配 "(constructor?,id*,result*,association*,collection*,discriminat
在配置 mybatis mapper.xml文件时, 一不小心就会报如下类似的异常: Caused by: org.springframework.beans.factory.BeanCreation ...