cece—android开发规范v1

包目录说明

-constant-常量
-db-数据库相关,数据库采用xutils
-event-数据响应/事件结构体
-model-模型
    --buiness-业务类
    --entity-实体
    --param-参数对象
-network-网络请求
-ui
    --activity activity控制活动
    --adapter 适配器
    --fragment 具体布局
    --presetner 业务接口 
    --presetnerimpl 业务具体实现 
   --widget 各种自定义控件
-util 工具类

资源命名

图片资源

图片资源是App中内存占用最高的部分,而内存占用大小和图片的分辨率成正比,原则上项目中使用的所有分辨率较大的PNG图片资源都要尽量进行.9.png格式处理,通过减少图片分辨率来降低内存占用。
这里描述图片命名规范的范围不仅指放在drawable-hdpi、drawable-xhdpi中的png图片,也包括drawable文件夹下面采用xml生成的图片

静态图片

背景图片

a) 通用背景图片命名:bg_general_描述.png
b) 子模块背景图片命名:bg_模块名_描述.png
例如:bg_general_title.png、bg_account_logo.png

按钮图片

a)    通用按钮图片命名:btn_general_描述.png
b)  子模块按钮图片命名:btn_模块名_描述.png
例如:btn_general_ok.png、btn_account_login.png

普通Icon图片

a)    通用Icon图片命名:ic_general_描述.png
b)  子模块Icon图片命名:ic_模块名_描述.png
例如:ic_general_header.png、ic_settings_network.png

动态图片

背景图片

a) 通用背景图片命名:

 bg_general_描述_selected[unselect|pressed].png,
对应drawable文件夹下selector命名:bg_general_描述_selector.xml

b) 子模块背景图片命名:

bg_模块名_描述_selected[unselect|pressed].png,
对应drawable文件夹下selector命名:bg_模块名_描述_selector.xml

按钮图片

a) 通用按钮图片命名:

btn_general_描述_selected[unselect|pressed].png,
对应drawable文件夹下selector命名:btn_general_描述_selector.xml

b) 子模块按钮图片命名:

 btn_模块名_描述_selected[unselect|pressed].png,
对应drawable文件夹下selector命名:btn_模块名_描述_selector.xml

通用字符串资源

通用的字符串资源一般不与特定模块关联,字符串定义直接按中英文翻译即可。例如在strings.xml文件中定义如下字符串资源:


<string name=yes>Yes</string>
<string name="no">No</string>
<string name="load_more">Load More</string>
<string name="cancel">Cancel</string>
<string name="save">Save</string>
<string name="add">Add</string>

子模块字符串资源

子模块字符串资源定义格式规范:子模块名_英文描述。例如在strings.xml文件中分别定义如下字符串资源:

<string name="error_delete">Sorry, an error occurred while attempting to delete the %s.</string>
<string name="error_refresh">Sorry, %s could not be refreshed at this time. Please try again later.</string>
<string name="error_upload">Sorry, an error occurred while uploading the %s.</string>


<string name="media_edit_title_text">Title</string>
<string name="media_edit_description_text">Description</string>
<string name="media_edit_title_hint">Enter a title here</string>

颜色资源

默认颜色资源

为了防止颜色资源重复定义,便于统一管理,会在colors.xml文件中定义整个应用默认的几种主色调,颜色的英文名字定义不要与模块名关联,例如:


<color name="light_gray">#E6E6E600</color>
<color name="gray">#CCCCCC00</color>
<color name="white">#FFFFFF00</color>
<color name="black">#00000000</color>
<color name="list_row_bg">#EEEEEE00</color>
<color name="list_row_selected">#7E7E7E00</color>

子模块特有颜色资源

如果子模块有特殊的定制需求,可以在colors.xml文件中定义对应模块的颜色资源,颜色的英文名定义规范:模块名_描述_color[background]。例如:


<color name="chat_content_background">#AAAAAA00</color>
<color name="chat_title_background">#BBBBBBB00</color>
<color name="chat_word_color">#CCCCCC00</color>

布局资源

自定义布局的命名规范如下:

  • Activity content view:activity_模块名_描述.xml
  • Fragment content view: fragment_模块名_描述.xml
  • Dialog对话框布局:dialog_模块名_描述.xml
  • 列表项布局:list_描述_item.xml
  • 子模块其他类型布局:view_模块名_描述.xml

类和接口命名

使用大驼峰规则,用名词或名词词组命名,每个单词的首字母大写。
以下为几种常用类的命名:

activity类,命名以Activity为后缀,如:LoginActivity
fragment类,命名以Fragment为后缀,如:ShareDialogFragment
service类,命名以Service为后缀,如:DownloadService
adapter类,命名以Adapter为后缀,如:CouponListAdapter
工具类,命名以Util为后缀,如:EncryptUtil
模型类,命名以BO为后缀,如:CouponBO
接口实现类,命名以Impl为后缀,如:ApiImpl

成员变量规范

方法命名规则

在layout布局文件中,所有控件ID采用小写下划线命名法。
以下为几种常用方法的命名:
初始化方法,命名以init开头,例:initView
按钮点击方法,命名以to开头,例:toLogin
设置方法,命名以set开头,例:setData
具有返回值的获取方法,命名以get开头,例:getData
通过异步加载数据的方法,命名以load开头,例:loadData
布尔型的判断方法,命名以is或has,或具有逻辑意义的单词如equals,例:isEmpty

控件View变量命名规则

由于采用了xutils3 框架的注解框架,所以对应的控件View的类成员变量也采取和Id一致的命名规则,例如:

/** 登录按钮 **/
@ViewInject(R.id.btn_login)
Button btn_login;
/** 注册按钮 **/
@ViewInject(R.id.btn_register)
Button btn_register;
/** 用户名**/
@ViewInject(R.id.et_account)
EditText et_account;
/** 密码 **/
@ViewInject(R.id.et_pwd)
EditText et_pwd;
@ViewInject(R.id.tv_title)
TextView tv_title;

控件缩写对照表

控件 缩写 控件 缩写
TextView txt EditText et
Button btn ImageButton ibtn
ImageView img ListView list
RadioGroup rg RadioButton rbtn
ProgressBar progress SeekBar seek
CheckBox ck Spinner spinner
TableLayout tablel TableRow row
LinearLayout layout RelativeLayout rlayout
ScrollView scroll SearchView search
TabHost host TabWidget widget
PopupWindow pw

其他成员变量命名规则

其他类型的成员变量命名规则为:m+类名,Boolean类型的成员变量命名规则为:is+逻辑名。例如:

private Context mContext;
private long mUserId;
private boolean isToOpenGps = false;

常量命名

全部为大写单词,单词之间用下划线分开。

  public final static int PAGE_SIZE = 20;

成员变量书写顺序

依次是:公开的静态final常量、私有的静态final常量、公开成员变量、私有成员变量、控件View变量放在最后。

禁止的编码规范

  • 禁止在不同地点出现相同或相似的逻辑代码块或layout代码块
  • 禁止只出现一次的成员变量,禁止出现可以简单计算替换的成员变量和临时变量
  • 禁止在一块代码中插入没有上下文的代码
  • 禁止在BroadcastReceiver的onReceiver()方法中注册观察者,使用线程,或Handler异步任务
  • 禁止在Activity之间或者Activity和Service之间互相持有对方并且直接调用对方的函数或成员变量,如finish(),stopSelf()等方法
  • 禁止同时在Mainfest文件和代码或者layout和代码中,分散初始化业务/控件相关属性
  • 禁止一个实例化对象的成员变量在另外一个对象中直接被修改,特别是View的属性值只能由持有这个View的对象修改
  • 禁止将AsycTask用于执行超长时间的异步任务,如网络长时间连接;禁止将AsycTask用于不需要后台任务跟UI线程交互的场景
  • 禁止在接收启动广播中读写文件、SharePreference、数据库等阻碍系统启动的费时任务

建议的编码规范

  • 建议不要在Adapter的getView()、bindView()这类对性能敏感的函数中构造新对象或Listener对象
  • 建议静态对象或者单例模式中不要持有Activity(context)或Bitmap等大型成员对象
  • 建议异步任务运行后,主线程退出时执行异步任务的取消或中止操作
  • 建议不要把Handler定义成局部变量来使用,不要在单个类对象或者单个线程中创建多个Handler对象
  • 建议在以on开头的回掉函数中不使用for循环、数据库操作、文件操作等费时任务,例如onCreate()、onResume()、onPause等方法中
  • 建议不在主线程(UI线程)中执行数据库查询操作或Bitmap创建解析操作
  • 建议在两个模块传递参数的时候,不要传递List列表的索引或者位置参数
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容

  • 1.源代码格式规范 1.1 Java文件样式 1.1.1版权信息 版权信息必须在 java 文件的开头,比如: /...
    吉瑞蜀黍阅读 590评论 0 1
  • Android编码规范 源文件基础 文件名 源文件以其最顶层的类名来命名,大小写敏感,文件扩展名为.java。 文...
    呼呼哥阅读 930评论 0 0
  • 文章来自https://github.com/Blankj/AndroidStandardDevelop#安卓开发...
    小庄bb阅读 747评论 0 1
  • 作者:李旺成 时间:2016年4月3日 1. 前言 这份文档参考了 Google Java 编程风格规范和 Goo...
    diygreen阅读 39,852评论 19 224
  • Android 编码规范 1. 前言 这份文档是 Google Java Code Style 的译文,并稍有添加...
    人失忆阅读 442评论 0 3