命名规范
- 代码缩进使用4个空格,不是tab键。(可自己配置使按tab表示4个空格)
- 统一使用UTF-8编码,避免乱码问题。
- 尽量少使用拼音。
包命名规范
采用反域名命名规则,包名全部小写,连续的单词只是简单地连接起来,不使用下划线,一级包名为com,二级包名为xxx(可以是公司域名或者个人命名),三级包名根据应用进行命名,四级包名为模块名或层级名。如:
com.isa.crm.activity | com.isa.crm.adapter
包名 | 说明 |
---|---|
com.xxx.应用名称缩写.activity | 页面用到的Activity类 |
com.xxx.应用名称缩写.fragment | 页面用到的Fragment类 |
com.xxx.应用名称缩写.base | 页面中每个Activity类共享的可以写成一个BaseActivity类(基础共享的类) |
com.xxx.应用名称缩写.adapter | 页面用到的Adapter类(适配器的类) |
com.xxx.应用名称缩写.utils | 此包中包含:公共工具方法类(包含日期、网络、存储、日志等工具类) |
com.xxx.应用名称缩写.bean(model/domain均可,个人喜好) | 实体类 |
com.xxx.应用名称缩写.db | 数据库操作 |
com.xxx.应用名称缩写.widget(或者.ui) | 自定义的View类等 |
com.xxx.应用名称缩写.service | Service服务 |
com.xxx.应用名称缩写.broadcast | Broadcast服务 |
JAVA类命名规范
采用大驼峰式命名法,尽量避免缩写,除非该缩写是众所周知的,比如HTML,URL,如果类名称包含单词缩写,则单词缩写的每个字母均应大写。如:
Product | ProductManager |
ProductListActivity | ProductListAdapter | JsonHTTPSRequest
类 | 描述 | 例如 |
---|---|---|
Application类 | Application为后缀标识 | XXXApplication |
Activity类 | Activity为后缀标识 | 闪屏页面类SplashActivity |
解析类 | 为后缀标识 | |
公共方法类 | Utils或Manager或Tools为后缀标识 | 线程池管理类:ThreadPoolManager日志工具类:LogUtils |
数据库类 | 以DBHelper后缀标识 | MySQLiteDBHelper |
Service类 | 以Service为后缀标识 | 播放服务:PlayService |
BroadcastReceiver类 | 以Broadcast为后缀标识 | 时间通知:TimeBroadcast |
ContentProvider类 | 以Provider为后缀标识 | 单词内容提供者:DictProvider |
直接写的共享基础类 | 以Base为前缀 | BaseActivity,BaseFragment |
接口命名规范
命名规则与类一样采用大驼峰命名法,多以able或ible结尾。例如: interface Runable | interface Accessible
成员变量命名规范
采用小驼峰命名法。
临时变量命名
使用Google的m命名法。 例如:
private String mUserName;
静态变量可以使用s开头,例如:
private static String sUserName;
常量命名
常量使用全大写字母加下划线的方式命名。例如:
public static final String TAG = "tag";
public static final String ACTION_MAIN="android.intent.action.MAIN";
控件实例命名
类中控件名称必须与xml布局id保持一致(可以去掉{module_name})。例如:
在布局文件中 Button 的id为: android:id="@+id/btn_pay"
private Button btn_pay;
方法命名规范
动词或动名词,采用小驼峰命名法。例如: run(); | onCreate(); | syncProducts();
布局文件(Layout)命名规范
全部小写,采用下划线命名法。其中{module_name}为业务模块或是功能模块等模块化的名称或简称。 activity layout: {module_name}activity{名称} 例如:
crm_activity_main.xml | crm_activity_shopping.xml
fragment layout:{module_name}fragment{名称} 例如:
crm_fragment_main.xml | crm_fragment_shopping.xml
Dialog layout: {module_name}dialog{名称} 例如:
crm_dialog_loading.xml
包含项布局命名:include_{名称} 例如:
include_head.xml
adapter的子布局: {module_name}item{名称}_名称(listview的名称)lv 例如:
crm_item_shopping_xxlv.xml
共用的 item_名字
widget layout: {module_name}widget{名称} 例如:
crm_widget_shopping_detail.xml
资源id命名规范
命名模式为:{view缩写}布局的名字({module_name}activity(或其他如:fragment){名称}(可以只写{名称})){view的逻辑名称},如:
顾客管理CRM模块布局 LinearLayout 的布局id –> ll_shopping_content(全名是ll_crm_activity_shopping_content)
item里的控件命名{view缩写}_布局的名字可以只写{名称}item{view的逻辑名称} ll_shopping_item_content
常见控件View与其缩写对照参考表如下:
strings.xml中的id命名
命名模式:功能模块名称_activity名称_逻辑名称
图片资源文件命名规范
图标命名:布局的名字({module_name}activity(或其他如:fragment){名称}(可以只写{名称}))ic{名称} 例如:
shopping_ic_app.png 全名是crm_activity_shopping_ic_app.png
背景图片命名: 布局的名字_bg_{名称} 例如:
shopping_bg_navbar_highlight_normal.9.png
按钮Button命名: 布局的名字_btn_{名称} 例如:
shopping_btn_login_normal.9.png
按钮checkbox图片命名:布局的名字_checkbox_{名称} 例如:
shopping_checkbox_cart_true.png
共用图片命名:gl(global缩写)开头,例如:
gl_ic_blue_circle.png
gl_bg_blue_circle.png
动画文件命名动画文件(anim文件夹下):全部小写,采用下划线命名法,加前缀区分。
//前面为动画的类型,后面为方向
动画命名例子 | 规范写法 |
---|---|
fade_in | 淡入 |
fade_out | 淡出 |
push_down_in | 从下方推入 |
push_down_out | 从下方推出 |
push_left | 推像左方 |
slide_in_from_top | 从头部滑动进入 |
zoom_enter | 变形进入 |
slide_in | 滑动进入 |
shrink_to_middle | 中间缩小 |
注释
对实例变量、类常量进行注释说明 例如:
// 用户姓名
private String userName
对类、接口进行注释说明 例如:
/**
* Activity基类
* /
public class BaseActivity extends Activity{
}
对方法进行注释说明 例如:
/**
* 请求
*
* @param path 路径
* @param generalParams 基本参数
* @param businessParams 业务参数
* @return 请求结果
* @throws ApiException 请求错误则返回该异常
* /
public Map<String, Object> request (String path,
Map<String, Object> generalParams,
Map<String, Object> businessParams) throws ApiException {
return null;
}
AndroidUI优化
- layout组件化,尽量使用merge及include复用
- 使用styles,复用样式定义
- 软键盘的弹出控制,不要让其覆盖输入框
- 数字、字母和汉字混排占位问题:将数字和字母全角化。由于现在大多数情况下我们的输入都是半角,所以 字母和数字的占位无法确定,但是一旦全角化之后,数字、字母的占位就和一个汉字的占位相同了,这样就可以避免由于占位导致的排版问题。
- 英文文档排版:textview自动换行时要保持单词的完整性,解决方案是计算字符串长度,然后手动设定每一行显示多少个字母并加上‘\n‘
- 复杂布局使用RelativeLayout
- 自适应屏幕,使用dp替代pix
- 使用android:layout_weight或者TableLayout制作等分布局
- 使用animation-list制作动画效果
- 复用、回收Activity对象
临时的activity及时finish 主界面设置为singleTask 一般界面设置为singleTop
驼峰式命名法(CamelCase)
- 这里是列表文本大驼峰式命名法(UpperCamelCase):
每个单词的第一个字母都大写 如:XmlHttpRequest - 小驼峰式命名法(lowerCamelCase):
除了第一个单词,每个单词的第一个字母都大写 如:xmlHttpRequest
说明
该篇介绍为Android项目开发过程中的一些常用的命名规范|代码编写风格规范,该规范来源于个人资料整理(参考网络技术博客)、个人项目实践。参考这些规范有助于 项目的协同开发,项目代码的风格统一、在项目的后期维护中更方便、快捷的查找、理解和修改别人的代码。如朋友们有更好的规范要求、欢迎分享出来、一起讨论。
附录
一些常见的单词缩写
名称 | 缩写 |
---|---|
icon | ic(主要用在app的图标) |
color | cl(主要用于颜色值) |
divider | di(主要用于分隔线,不仅包括Listview中的divider,还包括普通布局中的线) |
selector | sl(主要用于某一view多种状态,不仅包括Listview中的selector,还包括按钮的selector) |
average | avg |
background | bg(主要用于布局和子布局的背景) |
buffer | buf |
control | ctrl |
delete | del |
document | doc |
error | err |
escape | esc |
increment | inc |
infomation | info |
initial | init |
image | img |
length | len |
library | lib |
message | msg |
password | pwd |
position | pos |
server | srv |
string | str |
temp | tmp |
window | wnd(win) |