Android 命名规范文档

工欲善其事,必先利其器

                ——《论语

犹豫项目原因,很长时间没有写过博客了,终于有了点时间就写点最近项目遇到的问题吧

俗话说得好,要想做好一件事,必须做好十全的准备。同理在开发过程中也同等重要,在我们开发的开始,不是考虑怎么样写代码,而是做好准备工作,(必须需求文档,应该用那些三方库,用什么样的设计模式,该项目适合什么样的开发语言等)。同样也需要指定一套命名规范,命名规范在团队开发中提现的非常重要(独立开发,也许你自己暂时能看懂,等时间长了,你再去看,也许你自己都不知道自己写的什么),在团队开发中,我们需要让别人看懂我们写的什么,如何更好的提高效率,命名规范起到了非常重要的位置。废话不多说了,直接看下文。

Android 命名规范文档

·        驼峰命名法:又称小驼峰命名法。除了首个单词首字母小写除外,其余所有单词所有首字母都要大写。

·        帕斯卡命名法:又称大驼峰命名法。所有单词首字母大写。

 

1、包的命名

包名一律小写

建议采用如下规则:【com】.【公司名/组织名】.【项目名称】.【模块名】

比如:com.sxwz.mvp.demo。然后在这个目录下根据业务逻辑进行分层。

常见的包分层结构如下:

·      

com.xxx.xxx.view –>自定义view 或者是View接口
·        com.xxx.xxx.activities –>activity类
·        com.xxx.xxx.fragments –>fragment类
·        com.xxx.xxx.adapter –>适配器相关
·        com.xxx.xxx.utils –>公共工具类
·        com.xxx.xxx.bean –>实体类
·        com.xxx.xxx.service –> service服务
·        com.xxx.xxx.broadcast –>广播接收器
·        com.xxx.xxx.db –> 数据库操作类
·        com.xxx.xxx.persenter –>中间对象
·        com.xxx.xxx.model –>数据处理类
 
 

2、类的命名

 
 
Android中类的命名与JAVA开发采用一致的规范即可。
大驼峰命名法,即所有单词首字母大写。
·        Activity –> xxxActivity.java
·        Application –>xxxApplication.java
·        Fragment –> xxxFragment.java
·        Service –> xxxService.java
·        BroadcastReceiver –>xxxBroReceiver.java
·        ContentProvider –>xxxProvider.java
·        Adapter –> xxxAdapter.java
·        Handler –> xxxHandler.java
·        接口–> xxxInter.java
·        接口实现类–> xxxImpl.java
·        Persenter –> xxxPersenter.java
·        公共父类–> BaseActivity.java、BaseFragment.java、- BaseAdapter.java等
·        util类 –> LogUtil.java
·        数据库类 –>BaseSQLiteDBHelper.java
 
 
 

3、方法的命名 

 
 与
java
开发类似,采用驼峰命名规则。首单词首字母小写,其余单词首字母大写。尽量不要使用下划线。 ·         
初始化方法尽量以
init
开头。如:
initView();initData();·         调用方法保持“临近原则”,被调用的方法,放在调用方法下方

 

 
• 调用方法保持“临近原则”,被调用的方法,放在调用方法下方 
• 单个方法体不要过长 
• 代码任何地方不要拼错单词 
• 统一调整IDE的Tab缩进为4个空格 
• 杜绝整个类代码格式化

4、布局文件中的id命名

 
 
规则:使用驼峰命名,前缀+逻辑名称,类变量名和布局文件id名称保持一致,不需要下划线分割
控件
缩写前缀
TextView/EditText
Tv/edt
ImageView
img
Button/RadioButton/ImageButton
Btn/rbtn/ibtn
RelativeLayout/LinearLayout/FrameLayout
rLayout/llayout/flayout
ListView
lv
WebView
wbv
CheckBox
cb
ProgressBar
progressBar
seekBar
seekBar
其他控件
控件名首字母缩写作为前缀
·                                如:TextView@+id/tvTitle
·                                如:EditView@+id/edtName
·                                如:Button@+id/btnSearch
4.1. 布局文件命名
规则: 使用前缀_逻辑名称命名,单词全部小写,单词间以下划线 分割。
布局类型
布局前缀
Activity
activity_
Fragment
fragment_
Include
include_
Dialog
dialog_
PopupWindow
popup_
Menu
menu_
Adapter
layout_item_
4.2. 资源文件命名
规则: 使用 前缀_用途 命名,单词全部小写,单词间以 下划线 分割。
·                                图片资源文件命名
前缀
说明
bg_xxx
各类背景图片
btn_xxx
这种按钮没有其他状态
ic_xxx
图标,一般用于单个图标
bg_描述_状态1[_状态2]
用于控件上的不同状态
btn_描述_状态1[_状态2]
用于按钮上的不同状态
chx_描述_状态1[_状态2]
选择框,一般有2态和4态
·                                第三方资源文件,不管在value、drawable
必须携带第三方资源前缀
umeng_socialize_style.xml
pull_refresh_attrs.xml
4.3. 类和接口命名
规则: 使用驼峰规则,首字母必须大写,使用名词或名词词组。要求简单易懂,富于描述,不允许出现无意义或错误单词。
类
描述
例如
Application类
Application为后缀标识
XXXApplication
Activity类
Activity为后缀标识
闪屏页面类SplashActivity
解析类
Handler为后缀标识
 
公共方法类
Utils或Manager为后缀标识
 
线程池管理类
ThreadPoolManager
 
日志工具类
LogUtils
 
数据库类
以DBHelper后缀标识
MySQLiteDBHelper
Service类
以Service为后缀标识
播放服务:PlayService
BroadcastReceiver类
以Broadcast为后缀标识
时间通知:TimeBroadcast
ContentProvider类
以Provider为后缀标识
单词内容提供者:DictProvider
直接写的共享基础类
以Base为前缀
BaseActivity,BaseFragment
4.4. 方法的命名
规则: 使用驼峰规则,首字母必须小写,使用动词。要求简单易懂,富于描述,不允许出现无意义或错误单词。
方法
说明
initXX()
初始化相关方法,使用init为前缀标识,如初始化布局initView()
httpXX()
http业务请求方法,以http为前缀标识
getXX()
返回某个值的方法,使用get为前缀标识
saveXX()
与保存数据相关的,使用save为前缀标识
deleteXX()
删除操作
resetXX()
对数据重组的,使用reset前缀标识
clearXX()
清除数据相关的
isXX()
方法返回值为boolean型的请使用is或check为前缀标识
processXX()
对数据进行处理的方法,尽量使用process为前缀标识
displayXX()
弹出提示框和提示信息,使用display为前缀标识
drawXXX()
绘制数据或效果相关的,使用draw前缀标识
4.5. 变量命名
规则: 使用驼峰规则,首字母必须小写,使用名词或名词词组。要求简单易懂,富于描述,不允许出现无意义或错误单词。
·                                成员变量命名,自定义变量前添加m前缀,布局控件变量不用添加m前缀
·                                常量命名,全部大写,单词间用下划线隔开
 
 

5、 其他规范

 
 
·                                Activity继承BaseFragmentActivity或SwipeBackActivity,可以使用ButterKnife注解代替findViewById
·                                方法
o                                                       拆分臃肿方法,每个方法只作一件事
o                                                       做同一个逻辑的方法,尽量靠近放到一块,方便查看
o                                                       不要使用try catch 处理业务逻辑
o                                                       使用JSON工具类,不要手动解析和拼装数据
·                                控制语句
o                                                       减少条件嵌套,不要超过3层
o                                                       if判断使用“卫语句”,减少层级
if(obj != null) { doSomething(); } 
修改为: 
if(obj == null) { return; } doSomething();
o                                                       if语句必须用{}包括起来,即便是只有一句
·                                处理“魔数”等看不懂的神秘数字
o                                                       代码中不要出现数字,特别是一些标识不同类型的数字。
o                                                       所有意义数字全部抽取到Constant公共类中,避免散布在各位类中。
·                                空行:空行将逻辑相关代码段隔开,简洁清楚,提高可读性
o                                                       成员变量之间,根据业务形成分组加空行
o                                                       方法之间加空行
·                                用好TODO标记
o                                                       记录想法,记录功能点,开发过程中可以利用TODO记录一下临时想法或为了不打扰思路留下待完善的说明
o                                                       删除无用TODO,开发工具自动生成的TODO,或则已经完善的TODO,一定要删除。
 
 

6、 编码规范

 
 
·        代码中尽量不要出现中文。注释和除外。代码中通过strings.xml引用来显示中文。
·        控件声明放在activity级别,这样在activity其他地方可以使用。
·        在一个View.OnClickListener中处理所有的点击事件逻辑,这样看起来很集中和直观。
·        strings.xml中使用%1sd等实现字符串的通配。
·        布局文件中的字体大小,都定义在dimens.xml中。
·        有关margin和padding的值也都放在dimens.xml中。
·        界面之间传值尽量使用intent方式。少用全局变量。
·        不建议在布局文件中添加点击事件。
·        数据类型转换一定要校验。
·        使用常量代替枚举。
·        实体不要在不同模块间共享,但是可以在统一模块下的不同页面共享。
·        建议采用左括号与方法名称在同一行的代码格式来进行代码的编写和格式化。貌似左括号在下一行是C#的形式。
·        业务稍微复杂一些,都有可能提炼一个BaseActivity或BaseFragment出来做为公共父类。
·        类注释一定要写,管家的方法也要写方法注释。常量尽量写注释。
 
 

7、 Libraries  

 
 
Base 一些好的三方lib  仅供参考
·                                fastjson-android-1.2.4.jar
·                                okhttp-2.2.0.jar
·                                okio-1.2.0.jar
·                                picasso-2.5.0.jar
·                                butterknife:7.0.1
·                                ormlite-android:4.48
 
 

8、可以选择一些好的ui   下文仅供参考

 
 
·                                PullToRefresh
·                                QuickAdapter
·                                PagerSlidingTabStrip
·                                SystemBarTint 状态栏以及导航栏设置背景颜色
·                                SwipeBackLayout 左滑返回
·                                PullToZoomView 可以下拉缩放HeaderView
·                                AutoLoopViewPager 轮播图
·                                PhotoView
·                                ViewPageIndicator