凝视

导入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前缀标识

须要注意的一点,全部的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    一组变量中的当前变量

常量

所有大写,採用下划线命名法.比如: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编码规范的更多相关文章

  1. 赵雅智_android多线程下载带进度条

    progressBar说明 在某些操作的进度中的可视指示器,为用户呈现操作的进度,还它有一个次要的进度条,用来显示中间进度,如在流媒体播放的缓冲区的进度. 一个进度条也可不确定其进度.在不确定模式下, ...

  2. 赵雅智_Android案例_刮刮乐

    实现效果 主要代码 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns ...

  3. 赵雅智_Android的getResources()资源引用

    今天做一个Android的刮刮乐项目.里面用到非常多的地方用到了getResources. <span style="font-size:12px;"> // 获得图片 ...

  4. 赵雅智_android获取本机运营商,手机号部分能获取

    手机号码不是全部的都能获取.仅仅是有一部分能够拿到. 这个是因为移动运营商没有把手机号码的数据写入到sim卡中.SIM卡仅仅有唯一的编号.供网络与设备 识别那就是IMSI号码,手机的信号也能够说是通过 ...

  5. 赵雅智_android_frame动画

    在開始实例解说之前,先引用官方文档中的一段话: Frame动画是一系列图片依照一定的顺序展示的过程,和放电影的机制非常相似.我们称为逐帧动画.Frame动画能够被定义在XML文件里,也能够全然编码实现 ...

  6. 赵雅智_service电话监听2加接通电话录音

    步骤: 创建CallStateService继承Service 取得电话服务 监听电话动作 电话监听的对象 没有电话时 停止刻录 重设 刻录完毕一定要释放资源 电话响铃时 从麦克风採集声音 内容输出格 ...

  7. 赵雅智_ContentProvider

    ContentProvider介绍 ContentProvider是不同应用程序之间进行交换数据的标志API 也就是说:一个应用程序通过ContentProvider暴露自己的数据操作接口,那么无论该 ...

  8. 赵雅智_Fragment生命周期

    官网帮助文档链接:  http://developer.android.com/guide/components/fragments.html 主要看两张图.和跑代码 一,Fragment的生命周 w ...

  9. 赵雅智:js知识点汇总

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb3lhemhpMjEyOQ==/font/5a6L5L2T/fontsize/400/fill/I0 ...

随机推荐

  1. hibernate它 10.many2many单向

    在前文hibernate之5.many2one单向提到多对多关系,表结构设计是基于中间表来实现, 以下以用户与角色(多对多)为例,在Hibernate是怎样操作的 表结构设计: 类图: CRUD; S ...

  2. LeetCodeOJ. Longest Common Prefix

    试题请參见: https://oj.leetcode.com/problems/longest-common-prefix/ 题目概述 Write a function to find the lon ...

  3. Oracle 六闪回技术,flashback

    Flashback 技术基于Undo segment基于内容的, 因此,限制UNDO_RETENTON参数. 要使用flashback 特征,您必须启用自己主动撤销管理表空间. 在Oracle 11g ...

  4. HDU 4864Task(更多的联合培训学校1)(贪婪)

    职务地址:pid=4864">HDU4864 这题又是一上来觉得是最小费用流,可是边太多.果然,敲完交上去后不断TLE.. 小优化了两次也没过. . . sad.. 后来看了题解才发现 ...

  5. Android:ViewPager扩展的具体解释——导航ViewPagerIndicator(有图片缓存,异步加载图片)

    我们已经用viewpager该. github那里viewpager扩展,导航风格更丰富.这个开源项目ViewPagerIndicator.非常好用,但样品是比较简单,实际用起来是非常不延长.例如,在 ...

  6. 《javascript高级编程》读书笔记(两)javascript基本概念

    第三章:基本概念 ECMAScript那里5种简单数据类型(也称基本数据类型):Undefined\Null\Boolean\Number\String,另一种复杂数据类型--Object,Objec ...

  7. Android 常规任务的高度【schedule】与【scheduleAtFixedRate】差额

    于android计划定期任务有两种方法 1.schedule 2.scheduleAtFixedRate 这两种方法的差别在于 首次调用时间(Date when)这个參数 <span style ...

  8. Android做法说明(3)---Fragment使用app袋或v4包解析

    Android做法说明(3)---Fragment使用app袋或v4包解析 1)问题简述 相信非常多的朋友在调用Fragment都会遇到以下的情况: watermark/2/text/aHR0cDov ...

  9. Maven直接部署Web应用Tomcat

    1. 下载解压版tomcat,并配置环境变量.所以tomcat你可以成功启动. 使用版本解压tomcat可以方便查看tomcat的后台输出的出错信息,便于调试. 2. 给tomcat配置用户名密码. ...

  10. 解决 Mybatis 元素类型为 "resultMap" 的内容必须匹配 "(constructor?,id*,result*,association*,collection*,discriminat

    在配置 mybatis mapper.xml文件时, 一不小心就会报如下类似的异常: Caused by: org.springframework.beans.factory.BeanCreation ...