赵雅智_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前缀标识

须要注意的一点,全部的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文件夹下的文件名称添加前缀
  • 数据一定要效验,比如字符型转数字型,假设转换失败一定要有缺省值;服务端响应数据是否有效推断
时间: 2024-11-10 14:59:34

赵雅智_Android编码规范的相关文章

赵雅智_android http get请求

<!-- 添加网络访问权限 --> <uses-permission android:name="android.permission.INTERNET"/> 布局文件 activity_login.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content&q

赵雅智_android使用adb命令详解附图

adb是一个客户端-服务器端程序,其中客户端是你用来操作的电脑,服务器端是android设备 我们除了用可视化窗口中操作也可以采用cmd命令行进行操作. 在开始菜单的搜索栏中输入cmd打开命令行 在本地找到adb.exe路径(如图1.1),把adb.exe拖到cmd命令行敲击回车显示所有可操作帮助示例(如图1.2). 图1.1 adb.exe路径 图1.2 adb命令示例 如果不输入adb的正确路径就不能进行正常显示,如图1.3: 图1.3adb未能正确打开 为了保证adb在任何路径下都能使用,

赵雅智_Android短信发送器

注意要点: 1)必须要在AndroidManifest.xml中添加发送短信权限<uses-permission android:name="android.permission.SEND_SMS" /> 设置视图:setContentView(R.layout.布局xml文件); 2)查找控件:findViewById(R.id.控件id); 3)监听按钮事件:控件.setOnClickListener(this),实现OnClickListener接口 4)获取edit

赵雅智_android实例_当监听类有数据更新时下拉刷新

之前两篇文章分别介绍了OnScrollListener的实现和ContentProvider监听数据的变化,下面我们就结合者两个知识点实现一个小项目 项目需求 使用当ContentProvider监听类有数据更新时,在当前界面进行提示,并用OnScrollListener实现下拉刷新 实现效果 通过ContentProvider显示数据在界面 当监听类发生变化时 下拉刷新后显示数据 实现步骤 android_sqlite项目 定义操作标识 匹配结果码 继承ContentProvider类重写方法

赵雅智_android系统联系人app分析并获取数据

手机联系人存放位置 和短信一样在data-data下 手机联系人数据库解析 将contacts2.db表导出,通过SQLiteexpert查看 mimetypes表:存放的数据类型(电话,头像,姓名,邮箱) 外键: raw_contacts表:存放联系人的id contact_id:联系人id display_name:联系人姓名 data表:存放联系人的数据 data1:联系人数据 data2:在mimetypes表中data1表示值得意义 mimetype_id:联系人ID,data数据所属

赵雅智_android样式与主题

样式与主题的区别 样式应用于特殊的组件,主题应用与整个应用或整个Activity 主题不仅单单显示内容的风格(大小.颜色),而且可以设置窗口的显示风格 当主题的设置属性与样式的设置属相相同时,系统按样式的设置属性显示 系统定义的一些常有主题: <activity android:theme="@android:style/Theme.Dialog"></activity>对话框风格 <activity android:theme="@androi

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

progressBar说明 在某些操作的进度中的可视指示器,为用户呈现操作的进度,还它有一个次要的进度条,用来显示中间进度,如在流媒体播放的缓冲区的进度.一个进度条也可不确定其进度.在不确定模式下,进度条显示循环动画.这种模式常用于应用程序使用任务的长度是未知的. XML重要属性 android:progressBarStyle:默认进度条样式 android:progressBarStyleHorizontal:水平样式 progressBar重要方法 getMax():返回这个进度条的范围的

赵雅智_Android Paint

要绘图,首先得调整画笔,待画笔调整好之后,再将图像绘制到画布上,这样才可以显示在手机屏幕上.Android 中的画笔是 Paint类,Paint 中包含了很多方法对其属性进行设置,主要方法如下: setAntiAlias: 设置画笔的锯齿效果. setColor: 设置画笔颜色 setARGB:  设置画笔的a,r,p,g值. setAlpha:  设置Alpha值 setTextSize: 设置字体尺寸. setStyle:  设置画笔风格,空心或者实心. setStrokeWidth: 设置

赵雅智_android测试

测试概念 从是否关心软件内部结构和具体实现的角度划分 黑盒测试:只关心程序执行的过程和结果 白盒测试:根据源代码写测试方法或者测试用例 灰盒测试:是介于白盒测试与黑盒测试之间的 从软件开发的过程按阶段划分有 A.单元测试 B.集成测试 C.确认测试 D.系统测试 E.验收测试 F.回归测试 G.Alpha测试 新建测试项目测试 新建测试项目 新建测试类 在本类创建测试类 新建测试类继承AndroidTestCase类 配置测试设备和类库 配置测试设备 配置类库 AndroidManifest.x