Android开发规范真的很重要

前言:

最近这段时间都很忙很忙啊,都没时间好好写博客了,除了工作、还有一堆私事,有点烦;最近在公司忙,也让我意识到了开发规范真的很重要,所以特意抽点时间来分享一下。

命名规范主要是通过标识符命名法和英文缩写规则来定义的,如下详解:

标识符命名法(主要四种):

1.    驼峰(Camel)命名法:又称小驼峰命名法,除首单词外,其余所有单词的第一个字母大写;

2.    帕斯卡(pascal)命名法:又称大驼峰命名法,所有单词的第一个字母大写;

3.    下划线命名法:单词与单词间用下划线做间隔。

4.    匈牙利命名法:广泛应用于微软编程环境中,在以Pascal命名法的变量前附加小写序列说明该变量的类型。 量的取名方式为:<scope_> + <prefix_> + <qualifier>范围前缀,类型前缀,限定词。

英文缩写原则:

1.    较短的单词可通过去掉“元音”形成缩写;

2.    较长的单词可取单词的头几个字母形成缩写;

3.    此外还有一些约定成俗的英文单词缩写。

 

一.包名(packages):

采用反域名命名规则,全部使用小写字母。一级包名为com,二级包名为xx(可以是公司或个人),三级包名根据应用进行命名,四级包名为模块名或层级名;

com.xx.应用名称缩写.activities

页面用到的Activity类 (activities层级名用户界面层)

com.xx.应用名称缩写.base

页面中每个Activity类共享的可以写成一个i额BaseActivity类 (基础共享的类)

com.xx.应用名称缩写.adapter

页面用到的Adapter类 (适配器的类)

com.xx.应用名称缩写.tools

此包中包含:公共工具方法类(tools模块名)

com.xx.应用名称缩写.bean

(或com.xx.应用名称缩写.unity )

此包中包含:元素类

com.xx.应用名称缩写.db

数据库操作类

com.xx.应用名称缩写.view

(或com.xx.应用名称缩写.ui )

自定义的View类等

com.xx.应用名称缩写.service

Service服务

com.xx.应用名称缩写.broadcast

Broadcast服务

 

二.类名(classes):

名词,采用大驼峰命名法,尽量避免缩写,除非该缩写是众所周知的,  比如HTML,URL,如果类名称中包含单词缩写,则单词缩写的每个字母均应大写。

activity 

Aty或者Activity为后缀标识

欢迎页面类WelcomeAty.或者WelcomeActivity

Adapter

Adp或者Adapte 为后缀标识

新闻详情适配器NewtDetailAdp或则直接   NewDetailAdapter

解析类

Hlr为后缀标识

首页解析类HomePosterHlr

公共方法类

Tools或Manager为后缀标识

线程池管理类:ThreadPoolManager
            
日志工具类:LogTools

数据库类

以DBHelper后缀标识

新闻数据库:NewDBHelper

Service

以Service为后缀标识

时间服务TimeService

BroadcastReceive

以Broadcast为后缀标识

时间通知TimeBroadcast

ContentProvider

以Provider为后缀标识

直接写的共享基础类

以Base开头

BaseActivity,BaseFragment

 

三.接口(interface):

命名规则与类一样采用大驼峰命名法,多以able或ible结尾,如interface Runnable ;  interface Accessible 。

 

四.方法名(methods):

动词或动名词,采用小驼峰命名法例如:onCreate(), run()

initXX()

初始化相关方法,使用init为前缀标识,如初始化布局initView()

isXX()

checkXX()方法返回值为boolean型的请使用is或check为前缀标识

getXX()

返回某个值的方法,使用get为前缀标识

processXX()

对数据进行处理的方法,尽量使用process为前缀标识

displayXX()

弹出提示框和提示信息,使用display为前缀标识

saveXX()

与保存数据相关的,使用sav为e前缀标识

resetXX()

对数据重组的,使用reset前缀标识

clearXX()

清除数据相关的

removeXXX()

清除数据相关的

drawXXX()

绘制数据或效果相关的,使用draw前缀标识

 

五.常量名(constants):

全部大写,采用下划线命名法.例如:MIN_WIDTH。

 

六.变量名:(variables

采用小驼峰命名法。类中控件名称必须与xml布局id保持一致。

非静态字段命名以 m 开头,表示 member,如:mRun;

静态字段命名以 s 开头,表示 static,如:sInstance;

公有非静态字段命名以 p 开头;

公有静态字段(全局变量)命名以 g 开头;

控件变量添加组件前缀,顺序在所有者前缀之后,例如:全局名称 mBtnNext,局部名称 btnNext。

 

Private  int  mPrivate; 

protected int   mProtected;

private static  MyClass  sSingleton; 

public  int  pField; 

public  static  in t gField;

 

除单例模式外一般不得使用静态变量;

构造方法采用递增方式(参数多的写在后面);

 

七.资源文件命名规范:

(一).图片drawable文件夹下:

全部小写,采用下划线命名法,加前缀区分。

命名模式:activity名称_逻辑名称/common_逻辑名称,如果有多种形态如按钮等除外如btn_xx.xml(selector)

btn_xx

 按钮图片使用btn_整体效果(selector)

btn_xx_normal

 按钮图片使用btn_正常情况效果

btn_xx_press

 按钮图片使用btn_点击时候效果

bg_head

 背景图片使用bg_功能_说明

def_search_cell

 默认图片使用def_功能_说明

icon_more_help

 图标图片使用icon_功能_说明

seg_list_line

 具有分隔特征的图片使用seg_功能_说明

sel_ok

 选择图标使用sel_功能_说明

 

命名后缀:

unit

 在使用xml的tilemode来配图片时,element图片使用此后缀

nor

 图片的状态,代表普通状态

hl

 图片的状态,代表高亮状态

press

 图片的状态,代表按下状态

select

 图片的状态,代表其所占的view被选中

unselect

 图片的状态,代表其所占的view没有被选中

注意:

使用AndroidStudio的插件SelectorChapek可以快速生成selector,前提是命名要规范。

(二).XML文件(layout布局文件):

全部小写,采用下划线命名法。

1 .  contentview 命名
必须以全部单词小写,单词间以下划线分割,使用名词或名词词组。
所有Activity或Fragment的contentView必须与其类名对应,对应规则为:
将所有字母都转为小写,将类型和功能调换(也就是后缀变前缀)。
例如:activity_main.xml

2. Dialog命名:dialog_描述.xml
例如:dialog_hint.xml

3.PopupWindow命名:ppw_描述.xml
例如:ppw_info.xml

4. 列表项命名:item_描述.xml
例如:item_city.xml

5.包含项命名:模块_(位置)描述.xml
例如:activity_main_head.xml、activity_main_bottom.xml
注意:通用的包含项命名采用:项目名称缩写_描述.xml
例如:xxxx_title.xml

(三).anim文件夹下:

全部小写,采用下划线命名法,加前缀区分。

前面为动画的类型,后面为方向

动画命名例子

规范写法

备注

fade_in

淡入

 

fade_out

淡出

 

push_down_in

从下方推入

 

push_down_out

从下方推出

 

push_left

推像左方

 

slide_in_from_top

从头部滑动进入

 

zoom_enter

变形进入

 

slide_in

滑动进入

 

shrink_to_middle

中间缩小

 

 

(四).values中strings.xml,colors.xml等中的id命名:

命名模式:activity名称_功能模块名称_逻辑名称/activity名称_逻辑名称/common_逻辑名称

strings.xml中,使用activity名称注释,将文件内容区分开来

(五).layout中的id命名

命名模式为:view缩写_模块名称 的逻辑名称 ,如:btn_login、et_input_phone

view的缩写详情如下:

控件

缩写

LayoutView

lv

RelativeView

rv

TextView

tv

Button

btn

ImageButton        

imgBtn

ImageView         

mgView 或则 iv

CheckBox           

chk

RadioButton        

rdoBtn

analogClock        

anaClk

DigtalClock        

dgtClk

DatePicker         

dtPk

EditText           

et

TimePicker         

tmPk

toggleButton       

tglBtn

ProgressBar 

pb

SeekBar                            

skBar

AutoCompleteTextView

autoTxt

ZoomControls       

zmCtl

VideoView          

vdoVi

WebView            

webVi

RantingBar         

ratBar

Tab                

tab

Spinner            

spn

Chronometer        

cmt

ScollView          

sclVi

TextSwitch         

txtSwt

ImageSwitch        

imgSwt

listView           

lVi 或则lv

ExpandableList     

epdLt

MapView            

mapVi

 









































编码规范:

1.    源文件编码格式为 UTF-8

2.    java代码中不出现中文,最多注释中可以出现中文;

3.    服务端可以实现的,就不要放在客户端;

4.    引用第三方库要慎重,避免应用大容量的第三方库,导致客户端包非常大;

5.    处理应用全局异常和错误,将错误以邮件的形式发送给服务端;

6.    图片的.9处理;

7.    使用静态变量方式实现界面间共享要慎重;

8.    单元测试(逻辑测试、界面测试);

9.    不要重用父类的 handler,对应一个类的 handler 也不应该让其子类用到,否则会导致 message.what 冲突;

10.  strings.xml中使用 %1$s 实现字符串的通配;

11.  数据一定要效验,例如字符型转数字型,如果转换失败一定要有缺省值;服务端响应数据是否有效判断;

12.  对开源库的选取,一般都需要选择比较稳定的版本,作者在维护的项目,要考虑作者对issue的解决,以及开发者的知名度等各方面。选取之后,一定的封装是必要的。

 

 

代码提交规范:

无论使用的是Git,还是 SVN 都需要遵守下面这些规范;

1.    工作目录要及时更新,不要和服务器有太大的差别;

2.    提交代码时,如果出现冲突,必须仔细分析解决,不可以强行提交;

3.    提交代码之前先在本地进行测试,确保项目能编译通过,且能够正常运行,不可盲目提交;

4.    必须保证服务器上的版本是正确的,项目有错误时,不要进行提交;

5.    提交之前先更新;

6.    提交时注意不要提交本地自动生成的文件,比如我们Android Studio项目中的 idea、build文件夹是不需要提交的;

7.    不要提交自己不明白的代码;

8.    提前协调好项目组成员的工作计划,减少冲突;

9.    对提交的信息采用明晰的标注(写注释)。

更多精彩内容请关注本人博客:luoweichao.top


尊重原创,转载请注明:From zsml2016(http://blog.csdn.net/qq_29269233)Power byzsml2016侵权必究!





猜你喜欢

转载自blog.csdn.net/qq_29269233/article/details/65493568