安卓开发规范参考

Android开发规范V1.0

一、命名规范:

1、简介:总体命名都为英文字母拼接而成,对于常见的大家习以为常的单词可以采用 缩写形式,如常见的URLBUF等,较长的单词可以取全面几个字母形成缩写。

驼峰命名法:第一个单词的首字母小写,其余单词的首字母大写。

大驼峰命名法:每个单词的首字母都大写。

下划线命名法:每个单词用下划线间隔开。

2、具体命名:

1)包名:采用四级包名形式。

第一级代表单位性质,如com代表公司,edu代表教育机构,个人的话就随意了。

第二级代表公司或者教育机构的缩写,如Tencent

第三级为项目的名称,如扣扣项目的QQ

第四级为具体的功能分包,如base代表基础包,widgets代表组件包,utils代表工具包等等。

其余级别可以自行进行延伸,如可以自己根据功能模块去分包,之后再每个模块内部再进行相应的分包即可,如XX模块下分bean包、activitys包、adapter包等,也可根据设计模式进行分包等,如XX模块下的View包,Presenter包等。

2)类名:采用大驼峰命名法。

^1、普通类名:直接采用大驼峰命名法即可。

^2Activity命名:采用大驼峰命名法,同时类名的最后一般以Activity结尾,如BaseActivity等。

^3Service命名:同Activity一致,如LocationService等。

^4BroadCastReceiver命名:同Activity一致,如LoactionChangedBroadCastReceiver,也可缩写为LoactionChangedReceiver等。

^5ContentProvider命名:同Activity一致,如ContactContentProvider,也可缩写为ContactProvider等。

^6、自定义View的命名:采用大驼峰命名法,一般以父类的名字结尾,如CircleImageView等。

^7、数据库类命名:一般以DBHelper结尾,如NewsDBHelper等。

^8Adapter类命名:一般以Adapter结尾,如GoodsAdapter等。

^9、公共类命名:一般以Util或者Manager等结尾,如BitmapUtilHttpManager等。

^10、基础类命名:一般以Base开头,如BaseActivityBaseFragment等。

3)接口名:采用大驼峰命名法,一般以I开头,或者为OnXXXListener,前者一般 实现某一部分功能,如IXXXPresenter去表示XXXPresenter要实现的方法;后者一 般在监听回调中用到,如OnClickListenerOnChangedListener

4)属性名、变量名:采用小驼峰命名法。

^1、成员属性(变量):一般以m开头,如果是View的声明,一般组成为m+View简写+功能,如登陆按钮为mBtnLogin等;如果是一般属性则为m+属性名(+功能),如mDialogLogin,mInfo等。

^2、局部变量:采用小驼峰命名法,一般能说明变量的用途即可,如index表示下标等。

5)方法名:采用小驼峰命名法。

-->采用动词加名词命名,说明方法的具体功能,常有的操作一般如下:

-->表初始化的一般用initXX()命名。

-->表判断的一般用isXX()命名。

-->表获取、设置、重置的一般用getXX()setXX()resetXX()命名。

-->表数据处理一般用到processXX()命名。

-->表弹出、提示、显示的一般用displayXX()showXX()命名。

-->表保存信息、数据的一般用saveXX()命名。

-->表清除、移除、添加的一般用clearXX()removeXX()addXX()命名。

6)常量的命名:采用下划线命名法。

-->常量命名一般全部大写,每个单词之间用下划线隔开,如LOGIN_URL等。

7)资源文件的命名:

^1layout资源:对应activity的一般为activity_xxx,对应fragment的一般为fragment_xxx,对应view的一般为view_xxx,对应adapter一般为item_xxx,其他的对应局部的一般为item_xxx

^2drawable资源:选择器一般命名为xxx_selector,形状一般以xxx_circle,xxx_rect命名表示圆形或矩形。

^3、图片资源:一般为形态_功能,如btn_login等。

^4、字符串资源、颜色:能说明用途即可,如padding_10等。

^5layoutid:一般为控件缩写_功能,如登陆按钮为btn_login等。

^6、动画资源:一般为功能_方向,如fade_in表示淡入等。

二、排版规范:

1、简介:排版直接展示了代码的样式,规范、清晰的排版能够助人更加快速/准确地理 解代码,常见的排版方式如代码缩进、空行分隔等。

2、具体排版:

^1、代码缩进:代码块要进行代码的缩进,一般缩进为Tab,即4个空格,没有代 码缩进会使得代码是去层次感。

-->一般ifswitchforwhile等代码块都要采用此缩进方式。

^2、一句一行:一般不要把多个短句放在一行,会使得代码看起来比较混乱。

^3、太长的语句进行分割:如果一个逻辑语句过长,则进行适当的分割,如 XX&&XX&&XX&&XX则可以分割如下:

XX

&&XX

&&XX

&&XX

^4、大括号的使用:一般在ifswitch等语句中如果执行代码只有一行可以省略大 括号,这里不要省略,养成良好的编码习惯,维护起来更加方便,也不容易出错。

^5、字段、方法的排序:一般遵循从public-->private的顺序纵向排序。

^6、空行分隔:一般把一个代码块中不属于同一类型的操作用空行分隔开来,增加 代码的可读性与可维护性。

三、注释规范:

1、简介:不规范、甚至缺失的注释虽然不会影响代码的编译与执行,但是对于后期代 码的维护与重构却造成了很大的麻烦,需要我们去话费大量的精力与时间去理解与维护,

因此规范的注释在编码中是非常必要的,一般源程序的代码注释量要达到代码总量的 20%~30%

-->重要的类、函数的作用及原理、重要的字段都是需要添加注释的。

-->修改之后注释也要及时修改,保证注释与代码的一致性。

-->注释分为单行注释、多行注释以及文档注释。

2、具体注释:

^1、类、接口注释(文档注释/**  */)

-->位置:public等修饰符之前,import关键字之后。

-->内容:功能简述、@auther 创建者、@see 相关的类、方法(可选)、@since 品、模块版本、@deprecated 不建议使用(可选)。

^2、重要的成员变量、方法注释(文档注释/** */):

-->位置:需要注释的成员变量或者方法的上面

-->内容:成员变量注释说明成员变量的用途即可。

方法的注释,包含功能简述、@param参数说明(可选)、@return返回值说明(可 选)、@exception/@throws 抛出异常说明(可选)、@see 关注的类/方法/成员变量、 @since起始版本、@deprecated 不建议使用(可选)

^3、重要操作的注释(单行注释//  或多行注释/* */):

-->位置:操作的位置

-->内容:说明重要操作的内容,会产生的影响以及需要注意的事项。

^4、异常的注释:

-->位置:自定义异常的类(文档注释),抛出异常的位置(单行注释或者多行注释)。

-->内容:自定义异常注释类似于类和接口的注释,但需要说明异常抛出的情形以 及抛出异常说明的问题/异常处理;抛出异常的位置要说明异常抛出的具体原因以 及发生异常应该如何处理,可能的异常原因等。

四、其他规范:

1、方法的抽离,方法尽量一个方法做一件事情,不要把太多不相干的操作放在同一个 方法中,一方面不利于理解,也不利于代码的维护与复用。

2、上行原则,对于一些类的公共属性与方法,我们可以抽象一个父类,在父类中进行 属性与方法的申明与操作,明确代码的层次性同时增加代码的复用率。

3、下行原则,对于一些类的属性与方法具有特别明显的个体特征,我们则没有必要放 在父类中,尽量新建相应的子类放在其中进行操作,这样突出了明显的个体特征,也避 免了其他类继承该类时继承一些没有必要的属性与方法,比较臃肿与复杂,增加维护的 难度。

4、stringcolor资源分辨放在相应的目录下,不要在java代码中直接写字符串。

5、一般常规、通用的方法直接封装成工具类来使用(手机基本信息获取、屏幕尺寸 获取、图片加工、字符串匹配等)。

6、弹出框、提示ToastSnackBar)等常用组件封装起来统一管理,特殊需求特殊定制 即可。

7、尽量使用google官方组件实现功能,如下拉刷新、侧滑菜单等在v7design等包中 都已经存在。

8、日志信息统一管理,可引入第三方日志框架,如logger,也可以自己封装管理,实 现可自由开关日志输出等操作。

五、UI优化建议:

1、layout组件化,架构层次清晰;

-->include标签实现复用。

-->merge标签减少嵌套层级。

2、对于重复出现的部分,使用style,对样式进行复用。

3、复杂的布局尽量采用相对布局,避免嵌套层级过多。

4、实现自适应,使用dpsp为单位,不适用px为单位,同时可以使用权重进行局部 的平分。

六、性能优化建议:

1ListView/GridView性能优化,ViewHolder实现代码控件复用

,也可使用recycleview代替来实现。

2、异步任务:

网络请求,数据库操作,文件操作等耗时操作,放在子线程进行操作。

3、Bitmap处理:

Bitmap进行及时的回收处理操作。

4、大图片可使用.9.png进行拉伸来实现。

5、字符串拼接频繁的时候不要频繁使用+”来实现,可使用StringBufferStringBuilder 来实现。

6、监听器要及时销毁。

7、查询操作等的Cursor需要及时关闭与销毁。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值