Android代码规范

命名规范

  1. 代码缩进使用4个空格,不是tab键。(可自己配置使按tab表示4个空格)
  2. 统一使用UTF-8编码,避免乱码问题。
  3. 尽量少使用拼音。

包命名规范

采用反域名命名规则,包名全部小写,连续的单词只是简单地连接起来,不使用下划线,一级包名为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.应用名称缩写.serviceService服务
com.xxx.应用名称缩写.broadcastBroadcast服务

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优化

  1. layout组件化,尽量使用merge及include复用
  2. 使用styles,复用样式定义
  3. 软键盘的弹出控制,不要让其覆盖输入框
  4. 数字、字母和汉字混排占位问题:将数字和字母全角化。由于现在大多数情况下我们的输入都是半角,所以 字母和数字的占位无法确定,但是一旦全角化之后,数字、字母的占位就和一个汉字的占位相同了,这样就可以避免由于占位导致的排版问题。
  5. 英文文档排版:textview自动换行时要保持单词的完整性,解决方案是计算字符串长度,然后手动设定每一行显示多少个字母并加上‘\n‘
  6. 复杂布局使用RelativeLayout
  7. 自适应屏幕,使用dp替代pix
  8. 使用android:layout_weight或者TableLayout制作等分布局
  9. 使用animation-list制作动画效果
  10. 复用、回收Activity对象

临时的activity及时finish
主界面设置为singleTask
一般界面设置为singleTop

驼峰式命名法(CamelCase)

  • 这里是列表文本大驼峰式命名法(UpperCamelCase):
    每个单词的第一个字母都大写 如:XmlHttpRequest
  • 小驼峰式命名法(lowerCamelCase):
    除了第一个单词,每个单词的第一个字母都大写 如:xmlHttpRequest

说明

该篇介绍为Android项目开发过程中的一些常用的命名规范|代码编写风格规范,该规范来源于个人资料整理(参考网络技术博客)、个人项目实践。参考这些规范有助于 项目的协同开发,项目代码的风格统一、在项目的后期维护中更方便、快捷的查找、理解和修改别人的代码。如朋友们有更好的规范要求、欢迎分享出来、一起讨论。

附录

一些常见的单词缩写

名称缩写
iconic(主要用在app的图标)
colorcl(主要用于颜色值)
dividerdi(主要用于分隔线,不仅包括Listview中的divider,还包括普通布局中的线)
selectorsl(主要用于某一view多种状态,不仅包括Listview中的selector,还包括按钮的selector)
averageavg
backgroundbg(主要用于布局和子布局的背景)
bufferbuf
controlctrl
deletedel
documentdoc
errorerr
escapeesc
incrementinc
infomationinfo
initialinit
imageimg
lengthlen
librarylib
messagemsg
passwordpwd
positionpos
serversrv
stringstr
temptmp
windowwnd(win)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值