版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、书写规范说明1、简介1.2定义术语或缩写词说明性定义JavaDoc来自Sun 微系统用于生成API 文档为来自Java 源代码的HTML 格式的一种计算机软件工具。9PatchNinePatchDrawable 绘画的是一个可以伸缩的位图图像,Android会自动调整大小来容纳显示的内容。2、编码规范2.1代码风格代码内的空行、缩进、对齐、换行、间隔等代码风格均按照Eclipse2.1的标准。只需使用Eclipse2.1进行代码格式化即可。Eclipse中配置方式:2.2基本命名规范类别说明例子包包名一律小写, 少用缩写和长名;采用以下规则:com.组织名.项目名 后面再跟后面为模块名或层级名
2、称。如:com.tuge.项目缩写.模块名 à com. tuge.dzm.bookmark如:com.tuge.项目缩写.层级名 à com. tuge.dzm.activities类类或接口名是个一名词,采用大小写混合的方式,每个单词的首字母大写。尽量使你的类名简洁而富于描述。使用完整单词,避免用缩写词(除非该缩写词被更广泛使用,像URL,HTML)如:interface OnResultListenerclass Result方法方法名是动词名词结构,采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写;取值类可使用get前缀,设值类可使用set前缀,判
3、断类可使用is(has)前缀。如:setSuccessful()isSuccessful()变量只在代码块的开始处声明变量;采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写;变量名不应以下划线或美元符号开头;尽量避免单个字符的变量名;组件或部件变量使用其类型名或类型名缩写作其后缀。;集合类型变量,例如数组和矢量,应采用复数命名或使用表示该集合的名词做后缀。如:String bookName成员变量使用m开头,其它和变量的规则一致, 如:boolean mSuccessful临时变量临时变量通常被取名为i,j,k,m和n,它们一般用于整型;c,d,e,它们一般用于字符型。如:
4、for (int i=0;i<iLen;i+)常量全部采用大写,单词间用下划线隔开Static final String MSG_GATEWAY_NOT_RESPONSE;2.3控件命名规范类别说明(前缀)例子LinearLayoutlaylayFriendRelativeLayoutlaylayMsgFrameLayoutlaylayCartTableLayoutlaylayTabButtonbtnbtnHomeImageButtonibtnibtnPlayTextViewtvtvNameEditTextetetNameListViewlvlvCartImageViewivivHead
5、GridViewgvgvPhoto2.4资源文件命名规范类别说明例子layout文件必须以全部单词小写,单词间以下划线分割,使用名词或名词词组。用common前缀表示多模块共用布局,用inc前缀表示嵌入布局。采用以下规则:模块名_逻辑名称act_逻辑名称common_逻辑名称inc_逻辑名称act_friendfriend.xmlfriend_list_item.xmlfriend_info.xmlinc_topbar.xmlinc_navbar.xmlcommon_face.xmlcommon_date.xmldrawable全部单词小写,单词间以下划线分割。使用名词或名词词组,可加后缀_s
6、表示小图 _b表示大图,逻辑名称可由多个单词加下划线组成,采用以下规则:模块名_用途_逻辑名称模块名_用途_颜色用途_逻辑名称用途_颜色Icon-写死的,图标Bg-图片背景等Btn-按钮图片main_btn_home.png 按键maket_divider_white.png分割线ic_edit.png图标bg_main.png背景btn_red.png红色按键btn_red_b.png红色大按键ic_head_s.png小头像bg_input.png 输入框背景divider_white.png 白色分割线anim全部单词小写,单词间以下划线分割,采用以下规则:模块名_逻辑名称逻辑名称ref
7、resh_progress.xmlmarket_cart_add.xmlmarket_cart_remove.xmlstringsstrings的name命名使用Camel命名法,采用以下规则:模块名+逻辑名称逻辑名称mainMenuAbout主菜单按键文字friendTitle 好友模块标题栏friendDialogDel 好友删除提示loginCheckEmail 登录验证dialogTitle弹出框标题buttonOk 确认键loading 加载文字appNamecolorscolors的name命名使用Camel命名法,采用以下规则:模块名+逻辑名称颜色friendInfoBgfrie
8、ndBgtransparentgraystylescolors的name命名使用Camel命名法,采用以下规则:模块名+逻辑名称逻辑名称MainTabBottomBlueBigButtonGraySmallButtonFriendList2.5注释Java 程序有两类注释:实现注释(implementation comments)和文档注释(document comments)。实现注释是使用/*.*/和/界定的注释。文档注释(被称为"doc comments")由/*.*/界定。文档注释可以通过JavaDoc工具转换成HTML 文件。2.5.1文件注释所有的源文件都应该在
9、开头有一个注释,其中列出类名、版本信息、日期和版权声明。如下: /* * 文件名 * 包含类名列表 * 版本信息,版本号 * 创建日期 * 版权声明*/Eclipse中的配置方式:需要配置的注释格式如下:/* * title:$file_name * TODO包含类名列表 * Copyright (C) Shenzhen Futuo Technology Co.Ltd.All right reserved. * version:v1.0,$date */$filecomment$package_declaration$typecomment/*name $type_name * descrip
10、tion * author max * date $date */$type_declaration2.5.2类注释每一个类都要包含如下格式的注释,以说明当前类的功能等。/* * name 类名 * author 原作者 *description实现的主要功能。 *date创建日期*修改者,修改日期,修改内容。*/Eclipse中的配置方式:2.5.3方法注释每一个方法都要包含 如下格式的注释 包括当前方法的用途,当前方法参数的含义,当前方法返回值的内容和抛出异常的列表。/* * 方法的一句话概述 * 方法详述(简单方法可不必详述) * param s 说明参数含义 * return 说明返回
11、值含义 * throws IOException 说明发生此异常的条件 * throws NullPointerException 说明发生此异常的条件 */2.5.4类成员变量和常量注释成员变量和常量需要使用java doc形式的注释,以说明当前变量或常量的含义/* XXXX含义*/2.5.5其他注释方法内部的注释 如果需要多行 使用/* */形式,如果为单行是用/形式的注释。不要在方法内部使用 java doc 形式的注释“/*/”,简单的区分方法是,java doc形式的注释在 eclipse中为蓝色,普通注释为绿色。2.5.6 XML注释如果当前layout 或资源需要被多处调用,或为
12、公共使用的layout(若common_list_item),则需要在xml写明注释。要求注释清晰易懂。2.6编程规范2.6.1 方法l一个方法尽量不要超过30行,如果方法太长,说明当前方法业务逻辑已经非常复杂,那么就需要进行方法拆分,保证每个方法只作一件事。2.5.2 参数和返回值l一个方法的参数尽可能的不要超过4个!l如果一个方法返回的是一个错误码,请使用异常!尽可能不要使用null,替代为异常或者使用空变量如返回 List则可以使用Collections.emptyList()2.5.3 神秘的数代码中不允许出现单独的数字,字符!如果需要使用数字或字符,则将它们按照含义封装为静态常量!(
13、for语句中除外)2.5.4 控制语句判断中如有常量,则应将常量置于判断式的右侧。如:if ( true = isAdmin().尽量不使用三目条件的嵌套。所有if 语句必须用包括起来,即便是只有一句:if (true)/do something.if (true)i = 0; /不要使用这种对于循环:/不推荐方式_while(index < products.getCount()/每此都会执行一次getCount()方法,/若此方法耗时则会影响执行效率/而且可能带来同步问题,若有同步需求,请使用同步块或同步方法/推荐方式_/将操作结构保存在临时变量里,减少方法调用次数final int
14、 count = products.getCount();while(index < count)2.5.5 访问控制若没有足够理由,不要把实例或类变量声明为公有。通常,实例变量无需显式的设置(set)和获取(gotten),通常这作为方法调用的边缘效应 (side effect)而产生。 一个具有公有实例变量的恰当例子,是类仅作为数据结构,没有行为。亦即,若你要使用一个结构(struct)而非一个类(如果java 支持结构的话),那么把类的实例变量声明为公有是合适的。3、工程结构Android开发工程中初始化的时候如何在初期我们就能搭建一个好的架构,从开发的角度,看到整齐的代码、统一的
15、风格、清晰的分层,对后面工程的开发和扩展非常重要。关于Android架构,我们参考了网上一些人对App工程结构搭建的理解和一些当今比较流行的Android软件包,综合比较吸取其中优秀的,搭建我们自己通用的工程模板。Ø 软件包第一层,使用com.tuge+项目缩写;Ø 第二层,不按照模块划分,主要按照组件的类型来划分,然后把此类型所有的类全部放在其下,包结构如下:1. 实体包命名为model包,里面不仅存放实体类XXXX.java,而且还存放更高一级的实体类的相关类;2. config中存储一些系统配置,比如名称、应用参数等系统级的常量或者静态变量,包含LocSession类
16、,存放全部静态变量,运行性变量;3. constant包中存储的都是publish static final常量,定义状态、类型等等;4. common包中定义一些公用库、方法,这些方法和库,不应该涉及到业务;5. appwidget中存储自定义控件;6. util包中存储涉及到业务的公用方法如util、helper类和控件的数据源适配器。4、架构机制4.1异常处理机制Ø 所有导致异常的代码,都应尽可能提供一个不用引发异常就能检查是否成功的方法。例如,有些对象可以返回为null,如果不加判断就去操作就会报异常。尽管这并不总是可能的,但其目标是在正常执行情况下不应有异常发生;Ø
17、; 在每个捕捉到的异常中,使用用户可以理解的语言描述异常,而不要将系统异常的信息直接显示给用户;Ø 发生系统异常时,系统应能记录该异常,并提供给系统管理员、开发人员等查看。(如使用CNZZ把错误发到服务端);Ø 对于正常或预期的错误,或者对于正常的控制流,不要使用异常;Ø 业务流程中发生因业务不完整而返回的情况时,请勿使用异常,而采用return false;ref int ResultCode的方式返回业务错误代码。4.2多线程机制Ø 主线程负责创建、显示、更新UI控件,启动、停止子线程。用子线程完成逻辑运算并向主线程发出Message消息让主线程更新
18、UI,使用Handler实现子线程和主线程之间的消息传递;Ø Android对UI线程的反应时间要求高,超过5秒钟会报ANR错误。确保长时间操作在子线程运行;Ø 开发方式参考官网 这个方式在cnblogs的“谦虚的天下”博客中大量应用,代码量少,调用简洁,该方案的优势有:1. 使用在子线程发送异步Http请求,使用线程池限制并发请求占用的资源;2. 符合android的主线程更新UI机制,在内部使用Handler处理消息传递,触发开发者重写的匿名回调函数,处理响应;3. 包含常用的Http请求类库,如文件上传下载;4. 整个类库只有25kb。Ø 简单调用例子Asy
19、ncHttpClient client = new AsyncHttpClient();Client.get(“地址”,new RequestParams(参数名,参数值),new JsonHttpResponseHandler(public void onSuccess(JSONArray jsonObject)/编写代码在主线程更新UI)Ø 在实现Service时,如果需要停止服务,注意在onDestroy()事件中调用System.exit(0)关闭这个服务的线程。4.3用户验证机制Ø 用户远程验证,比如:HTTPCLIENT,WEBSERVICE,SOCKET等,A
20、ndroid客户端负责加密,服务端负责解密,为了安全性着想,数据在传输的过程中必须进行加密;Ø 数据格式验证,对用户输入的数据进行格式验证,比如:邮箱,数字、手机号码、电话,出生年月、时间等等进行严格的格式、长度、为空验证;Ø 项目Util包的RegexUtil正则表达式工具类提供了常见的数据格式验证方法。4.4缓存处理机制Ø 缓存管理的原理:通过时间的设置来判断是否读取缓存还是重新下载;Ø 我们采用文件缓存法处理,使用File.lastModified()方法得到文件的最后修改时间,与当前时间判断是否过期,从而实现缓存效果;Ø 根据数据的更新
21、频率和数据的重要性设置缓存时间1. 无网络环境下,我们只能读取缓存文件,哪怕缓存早就过期。WiFi网络环境下,缓存时间可以设置短一点,一是网速较快,而是流量不要钱。移动数据流量环境下,缓存时间可以设置长一点,节省流量,就是节省金钱,而且用户体验也更好;2. 根据文件的类型设置缓存时间,如图片文件可以永远读取缓存。Ø 刷新时间设置,如果数据更新时间为1天,则缓存时间设置为48小时比较合适,如果是资讯类应用,再减少,24小时,如果觉得数据比较重要或者比较受欢迎,用户会经常把玩,再减少,12小时,依次类推。为了保险起见,可能需要毫无理由的再次缩减一下。Ø 实现代码参考:4.5静态
22、和单例机制Ø 静态变量统一在config包下的locSession类中定义,减少使用静态变量;Ø 单例模式可以避免一个类构造出多个实例,减少内存消耗,但是单例模式本身就包含静态变量,会常驻系统内存,要减少使用单例模式;5、Activity类规范Ø 编码格式:UTF-8;,编码格式要统一,否则在不同的人IDE里面会显示乱码;Ø JDK版本要统一,现在统一使用JDK1.6,方法前面的override在JDK1.6以下会出现报错提示;Ø 根据Activity四大生命周期的特性,初始化和销毁处理操作要处理好;Ø 多余引用的包,也就是那些IDE
23、黄色提醒的引用包要删除,黄色提醒的变量也要删除,提示黄色就表示程序没有使用到,这是多余的;Ø AndroidManifest.xml 注册类时,不能重复注册,如果重复注册会导致APP不能安装到手机或者模拟器中,提示“应用程序未安装”;Ø 公共变量、静态变量统一声明在类的最前面,加上注释标明变量的用途;Ø onCreate() 方法写在变量的下面,排在所有方法的最前面,要有一眼直观的可读性;Ø Activity里面如果有多个点击事件,需要把点击事件提起出来;Ø 异步、多线程等等写在Activity类里面,不要另建一个新的类来处理;Ø 多个Acitivity继承统一的BaseActivity类;Ø 在任何涉及到业务操作、运算
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理记录的团队协作
- 2026五年级数学上册 循环小数的认识
- 2026二年级数学下册 调查方法的学习
- 2026年医疗废物规范化管理培训试题及答案
- 快捷酒店岗位责任制度
- 意识形态与主体责任制度
- 房地产安全责任制度
- 扶梯安全生产责任制度
- 技术经济承包责任制度
- 护士法律责任制度
- 研究生调剂流程
- 《货币资金核算》课件
- 专题训练:全等三角形(解析版)
- 高一下学期统编版(2019)必修中外历史纲要下教材附带习题答案
- JJG(交通) 208-2024 车货外廓尺寸动态现场检测设备
- 嗳气与反酸护理措施
- 《异常子宫出血诊断与治疗指南(2022版)》解读
- 四大地理区域的划分教案教学设计
- 深圳大学《算法设计与分析》2022-2023学年期末试卷
- 老年人关节病预防养护
- 房地产销售员工聘用劳动合同范本
评论
0/150
提交评论