分包规范

包名全部小写,连续的单词只是简单地连接起来,不使用下划线。 采用反域名命名规则,全部使用小写字母。一级包名为com,二级包名为xxx(公司名),三级包名根据应用进行命名,四级包名为模块名或层级名。 例如:com.longke.qq.activity

com.xxx.activity Activity类

com.xxx.service Service

com.xxx.receiver BroadCastReceiver

com.xxx.provider ContentProvider

com.xxx.base 基类

com.xxx.adapter ViewPager/RecyclerView等适配器

com.xxx.util 各种StringUtil,NetUtil,BitmapUtil等工具类

com.xxx.view 自定义view/第三方开源控件

com.xxx.bean 各种实体类,下面可以再细分VO,PO,DTO

com.xxx.db 数据库操作类

注意:

部分特殊的第三方SDK,比如微信支付,Zxing,讯飞语言等对如果对包位置有特殊要求的,按第三方要求来

MyApplication等全局相关的配置类,放在包名目录下

命名规范

核心原则

见名知意

禁用拼音

标准统一

Activity / Fragment / Adapter / Bean...

类名由一个或多个单词组成,采用 大驼峰命名法

同一界面,不同类型的类,前缀必须一样,比如:HomePageActivity,HomePageFragment,HomePageListAdapter...

Listener

Listener接口监听事件的命名规范:以On开头Listener作为后缀。

具体:On+事件描述+Listener

例如:点击事件:OnClickListener

对应的调用方法:setOnClickListener()

常量

常量命名采用 : 全大写 + 下划线方式例如:

public static final int LOGIN_FLAG = 1 ;

intent标记的key以INTENT 开头 , 各个单词以_隔开,例如:

public static final String INTENT_CAR_ID = "intentCarId";

变量

变量以小驼峰式命名法,不同类型的变量又有不同的命名方式.

私有成员变量

必须以"m"开头 + 变量名

例如:

private int mThemeId = 0;

private boolean mIsOpen;

private List mUrlList;

静态成员变量

必须以"s"开头 + 变量名

private static boolean sIsOpen = false;

局部变量

小驼峰命名法

public String getUserName(){

String userName = getUserNameFromDB();

...

}

方法

方法命名规则采用小驼峰命名法例如:

onCreate() / onResume() / onRun()

getXX()返回某个值的方法

initXX() 初始化相关方法,比如初始化布局:initView()

checkXX()和isXX()方法为boolean值的时候使用is或者check为前缀

saveXX() 保存数据

clearXX()和removeXX() 清除数据

updateXX() 更新数据

processXX() 对数据进行处理

dispalyXX() 显示某某信息

对于方法的其他一些规范

方法的参数尽可能不超过4个,多余4个考虑采用builder模式或者JavaBean形式

注意单一职责原则

方法尽量避免返回null,可以考虑抛异常或空数据,比如Collections.emptyList()

类声明规范

区块划分

建议使用注释将源文件分为明显的区块,区块划分如下

常量声明区

UI控件成员变量声明区

普通成员变量声明区

内部接口声明区

初始化相关方法区

事件响应方法区

普通逻辑方法区

重载的逻辑方法区

生命周期回调方法区

内部类声明区

类成员排列通用规则

按照发生的先后顺序排列

常量按照使用先后排列

UI控件成员变量按照layout文件中的先后顺序排列

普通成员变量按照使用的先后顺序排列

方法基本上都按照调用的先后顺序在各自区块中排列

相关功能作为小区块放在一起(或者作为一个封装体引入)

重载方法永不分离,当一个类有多个构造函数,或是多个同名方法,这些函数/方法应该按顺序出现在一起,中间不要放进其它函数/方法。

资源文件命名规范

Activity对应的布局文件命名:XxxActivity--> activity_xxx.xml,比如MainActivity.java--> activity_main.xml

XML中控件命名:控件名_界面名_作用,例如:tv_homepage_name ,et_login_phone

图片命名,资源文件,控件id命名:activity名称+功能名称(背景bg,按钮bt,图片控件iv等)+自己名称

RecyclerView / ListView中的item布局文件命名规范:以item_list作为前缀,以页面名称作为中缀,以列表描述作为后缀。具体:"itemlist"+页面名称+列表描述,例如:item_list_login_users.xml

Dialog布局文件命名规范:以dialog作为前缀,如果是通用的dialog则以common作为中缀以功能描述作为后缀。如果是对应页面定制的dialog,以页面描述作为中缀,dialog描述作为后缀。

具体:

通用的dialog:dialog+common+功能描述,例如dialog_common_hint.xml

指定页面的dialog:dialog+页面名称+功能描述,例如dialog_login_pwd_error.xml

values下文件命名

strings.xml

直接以对应的内容的英文单词组合命名.例如:

购票

景区列表

colors.xml

具体:页面+"_"+描述+颜色名称,例如:

登录页面登录按钮字体颜色

#000000

当然还有一些APP主题色,规范为:common_描述 ,例如:

#33AACC

dimens.xml文件命名

16dp

16dp

drawable目录下资源文件命名规范:

selector文件

以selector作为前缀,以某个页面的作为中缀如果是多个页面就以模块名称作为中缀或者是项目通用的就以common作为中缀,以功能描述作为后缀。

具体:

selector+页面名称+功能描述

selector+模块名称+功能描述

selector+common+功能描述

例如:

登陆页面的确认按钮:selector_login_confirm_btn.xml(login为页面名称)

所有支付模块购买的按钮:selector_pay_buy_btn.xml(buy为模块名称)

所有通用按钮的背景:selector_common_btn_bg.xml

shape图形

以shape 作为前缀,如果是通用的以common作为中缀,如果是单独页面的以页面名称作为中缀,或者以模块名称作为中缀,以功能描述作为后缀。

具体形式和selector一样。

图片资源

图片资源命名规范 全部小写,采用下划线命名法,加前缀区分 命名模式:可加后缀 _small 表示小图, _big 表示大图,逻辑名称可由多个单词加下划线组成,采用以下规则:

用途_模块名_逻辑名称

用途_模块名_颜色

用途_逻辑名称

用途_颜色

icon图片资源以ic开头;

具体: 前缀+""+页面名称+""+描述 (如果页面和描述一致的则不用重复)

欢迎页面背景图 bg_welcome.png

登录页面 登录按钮背景 bg_login_btn.png

btn_main_home.png 按键

divider_maket_white.png 分割线

ic_edit.png 图标

bg_main.png 背景

btn_red.png 红色按键

btn_red_big.png 红色大按键

ic_head_small.png 小头像

bg_input.png 输入框背景

divider_white.png 白色分割线

anim目录

全部小写,采用下划线命名法,加前缀区分。具体动画采用以下规则:

模块名_逻辑名称

逻辑名称

refresh_progress.xml

market_cart_add.xml

market_cart_remove.xml

普通的tween动画采用如下命名方式:

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

动画命名例子 描述

fade_in 淡入

fade_out 淡出

push_down_in 从下方推入

push_down_out 从下方推出

push_left 推向左方

slide_in_from_top 从头部滑动进入

zoom_enter 变形进入

slide_in 滑动进入

shrink_to_middle 中间缩小

代码管理

每完成一个小功能,无论是单个界面的UI,还是某个模块的逻辑,都先本地commit,最后统一push

每天下班之前必须push当天代码

必须确保push到远程仓库的代码是可以正常运行的,不能存在编译错误

使用.gitignore过滤掉自动生成的文件

养成push之前先pull的习惯

技术选型

编程框架标配为 RxJava2.0 + Retrofit2.0 + MVP

架构设计

以下自选:

MVP

MVVM

禁用

MVC

万能Activity

备选开源库

选择开源库时考虑的因素:

低耦合

单一职责

star 和 issue数

维护频率

图片

Glide

Picasso

Fresco

禁用

UIL

Volley

网络

Retrofit + Okhttp

禁用

XUtils

Volley

数据库

GreenDao

Realm

禁用

XUtils

原生Sqlite

事件总线

EventBus

RxBus

如非必须,不用BroadcastReceiver,使用BroadcastReceiver时应用内通信首选LocalBroadcastReceiver.

依赖注入

ButterKnife

Dagger2

禁用

XUtils

手动findViewById

其他

如发现有其他更加优秀的开源库,欢迎讨论,补充

其他注意事项

定义类或者接口 首行留空格,末尾不留;其次每个逻辑分区都要留单行空格(除普通常量定义外)

定义类或者接口变量时,请使用基类或者顶层接口定义变量

自行控制类、接口、及其成员的访问权限,尽量缩小访问权限

类如果不是为扩展而设计的请加final修饰符

遇到switch语句时,酌情考虑将每个case语句拆分成单个函数调用

接口定义不加“I”前缀,实现添加"impl"后缀,如果有必要请提供默认的实现和其它实现 (默认实现:Default+接口名+impl,其它实现 :具体扩展功能 + 接口 + impl)

具有controller功能的类或者接口定义 都以 功能+“manager” 形式定义

所有表示层设计的实体定义形式为 : 功能+“model”

所有列表展示用RecyclerView,禁用ListView

android接口类命名规范_Android开发规范相关推荐

  1. android接口类命名规范_超全面的UI基础设计规范来啦,还不收藏 ~

     写在前面的话   很多刚入行的UI设计师开始接触移动端UI设计的时候,对于基础的界面尺寸规范可能会有一定的模糊认知,导致做出来的界面往往会感觉不是那么和谐,却也不知道怎么去完善和改进. 对于大多数的 ...

  2. 前端规范 - js开发规范

    因为会牵扯到业务逻辑,在实际开发场景中,js开发会占绝大部分,相应的规范细节也比较多 限于篇幅原因,加上有eslint的这个利器,本文只讲一些最最常用的规范 [强制] 开启eslint 开启了esli ...

  3. android adapter 按钮隐藏 第一个无效_Android开发规范

    注释 类/复杂或者不能从方法名字看出意图的方法必须添加注释 /** * @Author: LiuJinYang * @CreateDate: 2020/5/16 9:32 * 网络请求工具类 */pu ...

  4. php原生开发规范,php开发规范

    PHP 开发规范整理 代码样式规范 编码基本规范 a.代码必须遵守 PSR-1. b.文件编码Unicode (UTF-8) 编码保存.同时不要使用 字节序标记(BOM) c.代码必须使用4个空格的缩 ...

  5. php 实例 规范,PHP开发规范实例详解

    本文主要和大家分享PHP开发规范实例详解,希望能帮助到大家. 源文件 代码使用<?php开头 ,忽略闭合标签?> 文件格式必须是无BOM UTF-8格式 一个文件只声明一种类型,如clas ...

  6. mysql数据库开发规范_开发规范——MYSQL数据库

    数据库规范 这里主要针对mysql数据库,其他数据库也可以借鉴 表 1.统一使用表命名规范 表名规范:分层+项目名缩写+实体名(小写)[+下划线+实体名+rel] 例子 表名:bc_user 分层: ...

  7. golang 命名规范和开发规范

    目录 文件命名 package 变量 常量 接口 结构体 方法 注释 README 文件命名 文件命名一律采用小写,不用驼峰式,尽量见名思义,看见文件名就可以知道这个文件下的大概内容. 其中测试文件以 ...

  8. 物理机存放mysql实例原则_MySQL数据库规范 (设计规范+开发规范+操作规范)

    I 文档定义 1.1 编写目的 为了在软件生命周期内规范数据库相关的需求分析.设计.开发.测试.运维工作,便于不同团队之间的沟通协调,以及在相关规范上达成共识,提升相关环节的工作效率和系统的可维护性. ...

  9. android 开启一个定时线程_ANDROID开发中定时器的3种方法

    在android中,经常用到的定时器主要有以下几种实现: 一.采用Handler与线程的sleep(long )方法 二.采用Handler的postDelayed(Runnable, long) 方 ...

  10. android引用的java包_Android开发中jar包的创建及引用

    jar包有两种,一种是纯粹的库功能,没有main入口函数,故无法直接执行:一种是包含main的可执行包! 如有hello/hello.java文件: $ cd hello/$ javac hello. ...

最新文章

  1. oracle 数据库问题:“ORA-01922: 必须指定 CASCADE 以删除...“,原因及解决办法
  2. IT经理世界:专注莫如史玉柱
  3. html5交互效果,浅谈HTML5 CSS3的新交互特性
  4. go mysql slave_【Golang+mysql】记一次mysql数据库迁移(一)
  5. 笔记本安装ubuntu后触控板失灵
  6. python优秀网友学习笔记推荐
  7. App安全之网络传输安全
  8. mysql创建操作用户
  9. 计算机导论python知识点_如何系统地自学 Python?
  10. 吴恩达《机器学习》 --- 神经网络
  11. python教程视频哪个好-Python视频教程谁的好
  12. 拓端tecdat|R语言关联规则模型(Apriori算法)挖掘杂货店的交易数据与交互可视化
  13. 项目4:抽奖程序 分时间段(按时段设置的奖品数为概率)
  14. Matlab运行程序_暂停方法
  15. 在MyEclipse下如何添加hiber…
  16. mysql通用精确计算年龄方式
  17. 2020倒计时,大厂核心送给每一个脚踏实地努力着的Android程序员,逆风前行
  18. 如何用好示波器?资深工程师也会忽略这些细节……
  19. 【Java习题程序】将int整数转化为int数组,不用转String。
  20. 最完整的磁性材料行业现状及发展前景分析,长文预警

热门文章

  1. JDBC链接MySQL数据库
  2. 2017/12/30 GUI和动态代理
  3. [hdu4311]Meeting point-1
  4. 第二次作业:硬币游戏——代码分析与改进
  5. 【Mac】nsurlsessiond 后台下载问题的解决方法
  6. [WCF编程]10.操作:请求/应答操作
  7. 第八章 深度强化学习-Nature深度Q网络(Nature DQN)
  8. 值得看的youtube频道
  9. 从零基础入门Tensorflow2.0 ----七、36. 文本生成之---2. 构建模型
  10. 从零基础入门Tensorflow2.0 ----四、16.tfrecord基础API使用