转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持!

 

Android开发编码规范

目的及指导原则

目的

统一规范 Eclipse编辑环境下Java的编码风格和标准

指导原则

1)首先是为人编写程序,其次才是计算机。这是软件开发的基本要点,软件的生命周期贯穿产品的开发、测试、生产、用户使用、版本升级和后期维护等长期过程,只有易读、易维护的软件代码才具有生命力。

2)保持代码的简单清晰,避免过分的编程技巧。保持代码的简单化是软件工程化的基本要求。不要过分追求技巧,否则会降低程序的可读性。

3)编程时首先保证正确性,其次考虑效率。编程首先考虑的是满足正确性、健壮性、可维护性、可移植性等质量因素,最后才考虑程序的效率和资源占用。

4)函数(方法)是为一特定功能而编写,不是万能工具箱。方法是一个处理单元,是有特定功能的,所以应该很好的规划方法,不能是所有东西都放在一个方法里实现。

5)多加注释。注释是为了让人更容易理解代码,而不是为了敷衍。例如 sort函数,注释写的是“排序”,那么该注释是无意义的,因为看名字就知道是排序。例如注释为“希尔排序实现”,则有意义,因为阅读者能知道名字以外更多的信息。

适用范围

适用于所有用Java语言开发的项目。

编码规范

文件

1) 项目文件必须使用一个有意义的名字。例如:Eclipse中下拉刷新的view文件被命名为’RefreshLoadingView’。

2) 对于文件的目录要按如下结构创建:

-包名下面:程序入口

-activity:存放所有Activity,不同模块可以建立子包存放便于区分

-frament:存放所有Frament,不同模块可以建立子包存放便于区分

-service:存放所有service,不同模块可以建立子包存放便于区分

-broadcast: 存放所有broadcast,不同模块可以建立子包存放便于区分

-view:存放所有自定义控件

-base:存放所有base类及存放全局变量

-utils:存放所有工具类

-adapter:存放所有adapter

-db:存放数据库相关如:model包(db实体), operate包(db操作类)

-http:存放请求类及所有请求实体(dto),callback

关于图片,资源文件等都按android默认存放路径存放

蓝牙,网络请求类,数据库操作基类封装成lib,引用即可。

注释

打开eclipse-》Properties->Code Templates->Comments

配置如下

Files

  1. /**
  2. * @Title: ${file_name}
  3. * @Package ${package_name}
  4. * @Description: ${todo}(用一句话描述该文件做什么)
  5. * @author 名字
  6. * @date ${date} ${time}
  7. * @version V1.0
  8. */
  9. Types
  10. /**
  11. * @ClassName: ${type_name}
  12. * @Description: ${todo}(这里用一句话描述这个类的作用)
  13. * @author名字
  14. * @date ${date} ${time}
  15. *
  16. * ${tags}
  17. */
  18. Fields
  19. /**
  20. * @author 名字
  21. * @date ${date} ${time}
  22. * @Fields ${field} : ${todo}(用一句话描述这个变量表示什么)
  23. */
  24. Constructors
  25. /**
  26. * <p>Title: </p>
  27. * <p>Description: </p>
  28. * ${tags}
  29. * @author 名字
  30. * @date ${date} ${time}
  31. */
  32. Methods
  33. /**
  34. * @author 名字
  35. * @date ${date} ${time}
  36. * @Title: ${enclosing_method}
  37. * @Description: ${todo}(这里用一句话描述这个方法的作用)
  38. * @param ${tags}    设定文件
  39. * @return ${return_type}    返回类型
  40. * @throws
  41. */
  42. Overriding methods
  43. /**
  44. * @author 名字
  45. * @date ${date} ${time}
  46. * <p>Title: ${enclosing_method}</p>
  47. * <p>Description: </p>
  48. * ${tags}
  49. * ${see_to_overridden}
  50. */
  51. Delegate methods
  52. /**
  53. * @author 名字
  54. * @date ${date} ${time}
  55. * ${tags}
  56. * ${see_to_target}
  57. */
  58. Getters
  59. /**
  60. * @author 名字
  61. * @date ${date} ${time}
  62. * @return ${bare_field_name}
  63. */
  64. Setters
  65. /**
  66. * @author 名字
  67. * @date ${date} ${time}
  68. * @param ${param} 要设置的 ${bare_field_name}
  69. */
  70. 有些重要地方用 // TODO 标明

编码排版格式

可用Eclipse自带格式快捷 shift+command(ctrl)+f

命名规范

方法

1) 方法的名称应全部使用有意义的单词组成,且以小写字母开头,多单词组合时,后面的单词首字母大写。

例如:

getUserInformation……

2) 设置类变量的内容的方法应使用set作为前缀,读取变量的内容的方法应使用get作为前缀。

例如:

getUserName();

setUserName(String username);

3) 方法中的参数:参数名要有意义

例如:

setUserName(String username);

变量

1) 变量必须起有意义的名字,使其他组员可以很容易读懂变量所代表的意义,变量命名可以采用同义的英文命名,可使用几个英文单词,第一个单词首字母小写,其他单词首字母大写。

例如:

private protected:

mCountChild

public:

局部变量

countChild

2) 对于一些特殊类型的变量,命名时要带上类型,如NSArray 的变量命名为xxxArray,其他的如xxxDictionary,xxxSize等。这样就可以从名称上知道是什么类型的变量。

常量

1) 避免在程序中直接出现常数,使用超过一次的应以常量定义的形式来替代。

2) 常数的宏定义应与它实际使用时的类型相一致。如以3.0来定义浮点类型,用3表示整型。

3) 常量的命名应当能够表达出它的用途,并且用大写字母表示。

例如:

public static final doublePI 3.1415926

4) 一些常量前加特殊前缀,可以作为不同常量的区分,

例如:

UserDefaultsKey的变量前加UDKEY_,

NotificationNameKey前面加NNKEY_,

DictionaryKey前面加DICTKEY_,

1) 所有的类名,接口名均以大写字母开头,多单词组合时,后面的单词首字母大写。类,接口名必须是有意义的。

2) 继承自UIView的类以View结尾。

例如:

OperatorUsersInfomationView,LabelView等。

3) 继承自ViewController的类以viewController结尾。

例如:

HomePageViewController,LoginViewController等。其他类推。

4) 所有保存数据的实体以Model结尾。

例如:

UserModel,

抽象类:

以Abstract开头

例:AbstractDataManager

接口:

以I开头

例:IDataManager

控件专用前缀规范

控件名前缀

Button/ImageButton btn

toggleButton tb

TextView tv

CheckBox cb

EditText et

GridView gv

ListView lv

VideoView vv

ScrollView scv

ImageView img

xml文件的控件id命名规则:

控件专用前缀+英文名称(每个单词首字母大写)

英文名称在能反映出该控件的大致用途的前提下尽量简短。

例如:

添加短信模板的按钮id可命名为:

btnAddSmsContent

对应java代码中的局部变量可命名为:

btnAddSmsContent

对应java代码中的类字段可命名为:

private protected:

mBtnAddSmsContent

public:

_btnAddSmsContent

显示短信模板的ListView id可命名为:

lvSmsContent

对应java代码中的局部变量可命名为:

lvSmsContent

对应java代码中的类字段可命名为:

private protected:

mLvSmsContent

public:

_lvSmsContent

修改规范

新增代码行

新增代码行的前后应有注释行说明。

//修改人,修改时间,修改说明

新增代码行

//修改结束

删除代码行

删除代码向的前后用注释行说明

//修改人,修改时间,修改说明

要删除的代码行(将要删除的语句进行注释)

//修改结束

修改代码行

修改代码行以注释旧代码行后再新增代码行的方式进行。

//修改人,修改时间,修改说明

//修改前代码行开始

//修改前代码行

//修改前代码行结束

//修改后代码行开始

修改后代码行

//修改结束

错误处理规范

1)对所有的实体类及其属性的使用要做非空检查,避免使用空对象引起的错误;

2)对数组进行越界检查;

3)所有有返回值的函数必须首先在函数开始指定默认值;

4)通用函数、方法以及具体业务实现代码中必须加 try…catch错误扑捉处理;

代码管理规范

1)统一使用SVN进行代码管理

2)严格控制commit次数,只有在关键代码或者模块完整功能全部实现、下班前才能做代码commit;

3)代码commit必须要写明变更记录;

4) 代码提交之前必须CheckStyle,并且解决CheckStyle警告后才能提交;

CheckStyle

1. Checkstyle是在软件开发中的一种静态代码分析工具,用来检查Java源代码是否符合编码规则。

2.配置CheckStylehttp://www.cnblogs.com/lanxuezaipiao/p/3202169.html

3.配置CheckStyle文件配置文件到(中文提示版)CheckStyle.xml

配置方法http://chenzhou123520.iteye.com/blog/1627618

4.使用CheckStyle

Android开发编码规范(自用)的更多相关文章

  1. ym——Android开发编码规范(自用)

    转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持! Android开发编码规范 目的及指导原则 目的 统一规范 Eclipse编辑环境下J ...

  2. 【安全开发】Android安全编码规范

    申明:本文非笔者原创,原文转载自:https://github.com/SecurityPaper/SecurityPaper-web/blob/master/_posts/2.SDL%E8%A7%8 ...

  3. Android开发代码规范(转)

    Android开发代码规范 1.命名基本原则    在面向对象编程中,对于类,对象,方法,变量等方面的命名是非常有技巧的.比如,大小写的区分,使用不同字母开头等等.但究其本,追其源,在为一个资源其名称 ...

  4. 你不可不看的Android开发命名规范

    标识符命名法最要有四种: Camel(骆驼)命名法:除首单词外,其余所有单词的第一个字母大写,如:fooBar; Pascal命名法:所有单词的第一个字母大写,如:FooBar: 下划线命名法:单词与 ...

  5. Android的编码规范

    一.Android编码规范 1.学会使用string.xml文件 在我看来,当一个文本信息出现的次数大于一次的时候就必须要使用string.xml 比如一个保存按钮 , 不规范写法: <Butt ...

  6. 【转】android 开发 命名规范

    原文网址:http://www.cnblogs.com/ycxyyzw/p/4103284.html 标识符命名法标识符命名法最要有四种: 1 驼峰(Camel)命名法:又称小驼峰命名法,除首单词外, ...

  7. 【转载】Android 开发 命名规范

    原文地址:http://www.cnblogs.com/ycxyyzw/p/4103284.html 标识符命名法标识符命名法最要有四种: 1 驼峰(Camel)命名法:又称小驼峰命名法,除首单词外, ...

  8. android 开发 命名规范

    标识符命名法标识符命名法最要有四种: 1 驼峰(Camel)命名法:又称小驼峰命名法,除首单词外,其余所有单词的第一个字母大写. 2 帕斯卡(pascal)命名法:又称大驼峰命名法,所有单词的第一个字 ...

  9. Android 开发 命名规范(基础回顾)

    标识符命名法标识符命名法最要有四种: 1 驼峰(Camel)命名法:又称小驼峰命名法,除首单词外,其余所有单词的第一个字母大写. 2 帕斯卡(pascal)命名法:又称大驼峰命名法,所有单词的第一个字 ...

随机推荐

  1. oracle过滤名字中含有_的行

    select * from emp where ename like '%\_%' escape '\'; escape 定义转义字符串,这样转义字符串后的字符就是普通字符.

  2. 武汉科技大学ACM:1006: 华科版C语言程序设计教程(第二版)例题4.17

    Problem Description 输入一个整数,求它的素数因子.并按照格式输出. Input 一个整数n.(2<=n<=100) Output n=a*b*c*... (a,b,c为 ...

  3. hdu 1829 基础并查集,查同性恋

    A Bug's Life Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  4. epoll模型的et模式和lt模式

    http://www.cppblog.com/peakflys/archive/2012/08/26/188344.html    评论区讨论,唐诗! http://www.cnblogs.com/e ...

  5. java8+spring+angularjs 项目应用

    最近有写一个电子订单商务网站,使用JAVA8,SPRING,ANGULARJS对项目使用的技术和大家分享. 第一次写博客,哪有不对需要改正的请联系改正. 因为是项目是我给别人做的无法提供源码见谅,我尽 ...

  6. 前端MVC学习笔记(一)——MVC概要与angular概要、模板与数据绑定

    一.前端MVC概要 1.1.库与框架的区别 框架是一个软件的半成品,在全局范围内给了大的约束.库是工具,在单点上给我们提供功能.框架是依赖库的.AngularJS是框架而jQuery则是库. 1.2. ...

  7. 深拷贝与浅拷贝(mutableCopy与Copy)详解 iOS

    深拷贝与浅拷贝(mutableCopy与Copy)详解 iOS ios中并不是所有的对象都支持copy,mutableCopy,遵守NSCopying 协议的类可以发送copy消息,遵守NSMutab ...

  8. DES加解密实现方式

    private static readonly byte[] _keys = { 0x22, 0x84, 0x56, 0x98, 0x90, 0xAB, 0xpD, 0xEF }; private s ...

  9. assets文件夹资源的访问

    访问assets文件夹中的文件,分为以下几个步骤:1.在Activity里面调用getAssets(),获取AssetManager引用2.调用AssetManager.open(String fil ...

  10. IC 小常识

    IC产品的命名规则: 大部分IC产品型号的开头字母,也就是通常所说的前缀都是为生产厂家的前两个或前三个字母,比如:MAXIM公司的以MAX为前缀,AD公司的以AD为前缀,ATMEL公司的以AT为前缀, ...