Android 规范手册2020

本文档详细介绍了Android开发中应遵循的编码规范,包括包命名、代码命名及资源文件命名规则,旨在提高代码质量和团队协作效率。

1. 编码规范

1.1 命名规范

1.1.1 Android包命名规范

Android包目录命名会影响 APP后期开发效率和扩展性;

Android包目录命名有两种方式:PBL(Package By Layer) 与 PBF(Package By Feature)

PBL(Package By Layer)PBF(Package By Feature)
说明按层次划分(按职能划分),比如根目录命名为activity,fragment,db等;activity的职能是管理所有的Activity类;按功能模块名划分;比如谷歌的SystemUI,TvSetting等
优点项目结构简洁,上手快;开发人员少,功能简单,后期变动小的项目高内聚(所有功能都在一个包下完成,比如SystemUI的Recents);低耦合(包目录之间没有强关联性;只需要在此功能的模块对应的包目录下开发,除了基础类,一般不需要引入其它类);开发效率高(增删改查只需要在对应功能模块的包目录下操作;便于团队开发管理,提升问题排查效率,也方便后续开发人员维护接手);便于后期组件化转化
缺点低内聚(比如activity,放置了很多没有很强关联性的模块);高耦合;影响开发效率(开发一个功能,需要不同的包目录之间切换)

PBL 栗子:
在这里插入图片描述
PBF栗子:
在这里插入图片描述

1.1.2 Android代码命名规范

Java/Kotlin语言

名称规则用法
类名采用大驼峰命名法;命名规则:功能+类型Activity/Fragment/Service/Dialog/Adapter/BroadcastReceiver/ContentProvider类(以Activity/…ContentProvider为后缀)抽象类(Abstract为后缀)和接口类(Contract为后缀):abstract DeviceAbstract;interface DeviceContract ;接口实现类(Impl为后缀):deviceImpl; 工具类(以Util为后缀)模型类(以Bean为后缀)解析类(Parser为后缀)业务处理类(以Manager为后缀)自定义共享基础类(以Base开头):BaseActivity;测试类(测试类的名称+Test结束):DeviceImplTest
方法名采用小驼峰命名;动词或动名词;初始化(以init开头);按钮点击方法(to开头);设置方法(set开头);返回值获取(以get开头);异步加载数据(load开头);布尔值的判断方法(以is,has或check开头);对数据进行处理(handle开头);更新数据(update开头);弹出提示框(show开头);保存数据(save开头);重置数据(reset开头);删除数据(delete开头);查询数据(query开头);移除数据(remove开头)
变量名采用小驼峰;简短且有规则;变量显示的赋值;(1)类变量(成员变量):非公有的变量前面加m;静态变量前面加s;其它变量以小写字母开头,开头不要加任何前缀,比如Bean类,生成的get/set方法名;常量,静态变量全大写,采用下划线;(2)局部变量:变量为一个单词,小写字母开头;(3)参数:一个或多个单词组合,以小写字母开头;(4)临时变量:通常为i,j,k,m,n,一般用于整型;c,d,e一般用于字符型;(5)泛型变量:单个大写字母表示,如果是某个类的子类,那么大写字母一般取得父类所代表的这个类含义的首字母;(6)控件变量:UI控件变量为了与成员变量区别;UI控件类型的成员变量,统一在后面加上控件名称,比如 TextView mUserNameTextView;
// (1)类变量(成员变量)
public class demo {
	public static final int XXX_XXXX_XXXX = 250; // 常量,静态变量全大写,采用下划线
	private static Demo sSingleton; // 静态变量前面加s
	int mCount; // 非公有的变量前面加m
	private int mPrivate = 250;
	protected int mProtected = 250;
	public int publicxxx = 250; // 其它变量以小写字母开头
}

// 其它变量以小写字母开头,开头不要加任何前缀,比如Bean类,生成的get/set方法名
public class XXXBean {
	String userName;
	String address;
	public void setUserName...
	public void getUserName
}

// (2)局部变量/(3)参数
public void addXxxx(String userName/*参数*/) {
	XXXBean bean; // 局部变量
	// 临时变量:i,j,k,m,n,一般用于整型
	for (int i = 0; i < len; i++)
	// 临时变量:c,d,e一般用于字符型
	for (String c:StringList)
}

// (5)泛型变量:其中 V 代表 View;M代表 Model;
interface BasePresenter<V extends BaseView, M extends BaseModel>

1.1.3 Android资源文件命名规范

名称规则
layout命名类型名 + 模块名

用法讲解:
LoginActivity.java 对应 activity_login.xml,规则是类名单词倒置,中间用 “_” 链接,并且单词全部改成小写;

  • Fragment:比如 fragment_login
  • Dialog:比如 dialog_update
  • include: 比如 include_tips
  • recyclerview,gridview 等列表相关的item布局命名: 比如 item_user_vip;表示header/footer,item_user_header/item_user_footer
名称规则
layout中的id命名全部小写,采用下划线;控件缩写+模块名+功能名

用法讲解:

<TextView android:id="@+id/et_login_password" ...
<Button android:id="@+id/btn_login_submit" ...
控件缩写控件缩写
TextViewtvEditTextedt
ButtonbtnImageButtonibtn
ImageViewimgListView/RecyclerViewlv
RadioGrouprgroupRadioButtonrbtn
ProgressBarpbSeekBarseek
CheckBoxchkSpinnerspinner
TableLayouttlayoutTableRowtrow
LinearLayoutllayoutRelativeLayoutrlayout
ScrollViewsvSearchViewsearch
TabHostthTabWidgettw
名称规则
anim命名
名称规则
mipmap/drawable命名
values中的id命名规则
strings模块名 + 控件名 + 功能名
colors模块名/theme名 + 功能名 + 颜色编码
dimens模块名 + 控件名 + 描述
styles大驼峰命名;模块名 + 功能名

strings 用法讲解:

<string name="loading">xxx</string >
<string name="button_ok">确认</string >
<string name="search_edittext_hint">请输入关键字</string >
<string name="dialog_title">xxx</string >
<string name="setting_title">xxxxxx</string >
<string name="login_findpassword">找回密码</string >

colors用法讲解:

<colors name="white">#FFFFFF</colors >
<colors name="black">#000000</colors >

<colors name="splash_yello">#xxxx</colors >
<colors name="feedback_submit_black">#xxxx</colors >

dimens用法讲解:

<dimen name="margin_normal">16dp</dimen >
<dimen name="margin_small">8dp</dimen >

<dimen name="nav_account_image_size">8dp</dimen >
<dimen name="nav_header_logo_size">8dp</dimen >
<dimen name="nav_drawable_width">8dp</dimen >

styles用法讲解:

<style name="ContentStyle">
</style>
<style name="Login.ContentStyle">
</style>

1.2 代码规范

1.2.1 IDE规范

1.2.2

1.2.3 代码注释


开发规范


版本管理规范


打包发布规范


团队管理规范


参考资料

https://www.jianshu.com/p/45c1675bec69
《Android App开发入门与实战》

透明度

百分比:0%  HEX: 00
百分比:1%  HEX: 30
    百分比:2%  HEX: 50
    百分比:3%  HEX: 80
    百分比:4%  HEX: A0
    百分比:5%  HEX: D0
    百分比:6%  HEX: F0
    百分比:7%  HEX: 12
    百分比:8%  HEX: 14
    百分比:9%  HEX: 17
    百分比:10%  HEX: 1A
    百分比:11%  HEX: 1C
    百分比:12%  HEX: 1F
    百分比:13%  HEX: 21
    百分比:14%  HEX: 24
    百分比:15%  HEX: 26
    百分比:16%  HEX: 29
    百分比:17%  HEX: 2B
    百分比:18%  HEX: 2E
    百分比:19%  HEX: 30
    百分比:20%  HEX: 33
    百分比:21%  HEX: 36
    百分比:22%  HEX: 38
    百分比:23%  HEX: 3B
    百分比:24%  HEX: 3D
    百分比:25%  HEX: 40
    百分比:26%  HEX: 42
    百分比:27%  HEX: 45
    百分比:28%  HEX: 47
    百分比:29%  HEX: 4A
    百分比:30%  HEX: 4D
    百分比:31%  HEX: 4F
    百分比:32%  HEX: 52

    百分比:33%  HEX: 54
    百分比:34%  HEX: 57
    百分比:35%  HEX: 59
    百分比:36%  HEX: 5C
    百分比:37%  HEX: 5E
    百分比:38%  HEX: 61
    百分比:39%  HEX: 63
    百分比:40%  HEX: 66
    百分比:41%  HEX: 69
    百分比:42%  HEX: 6B
    百分比:43%  HEX: 6E
    百分比:44%  HEX: 70
    百分比:45%  HEX: 73
    百分比:46%  HEX: 75
    百分比:47%  HEX: 78
    百分比:48%  HEX: 7A
    百分比:49%  HEX: 7D
    百分比:50%  HEX: 80
    百分比:51%  HEX: 82
    百分比:52%  HEX: 85
    百分比:53%  HEX: 87
    百分比:54%  HEX: 8A
    百分比:55%  HEX: 8C
    百分比:56%  HEX: 8F
    百分比:57%  HEX: 91
    百分比:58%  HEX: 94
    百分比:59%  HEX: 96
    百分比:60%  HEX: 99
    百分比:61%  HEX: 9C
    百分比:62%  HEX: 9E
    百分比:63%  HEX: A1
    百分比:64%  HEX: A3
    百分比:65%  HEX: A6
    百分比:66%  HEX: A8
    百分比:67%  HEX: AB
    百分比:68%  HEX: AD
    百分比:69%  HEX: B0
    百分比:70%  HEX: B3
    百分比:71%  HEX: B5
    百分比:72%  HEX: B8
    百分比:73%  HEX: BA
    百分比:74%  HEX: BD
    百分比:75%  HEX: BF
    百分比:76%  HEX: C2
    百分比:77%  HEX: C4
    百分比:78%  HEX: C7
    百分比:79%  HEX: C9
    百分比:80%  HEX: CC
    百分比:81%  HEX: CF
    百分比:82%  HEX: D1
    百分比:83%  HEX: D4
    百分比:84%  HEX: D6
    百分比:85%  HEX: D9
    百分比:86%  HEX: DB
    百分比:87%  HEX: DE
    百分比:88%  HEX: E0
    百分比:89%  HEX: E3
    百分比:90%  HEX: E6
    百分比:91%  HEX: E8
    百分比:92%  HEX: EB
    百分比:93%  HEX: ED
    百分比:94%  HEX: F0
    百分比:95%  HEX: F2
    百分比:96%  HEX: F5
    百分比:97%  HEX: F7
    百分比:98%  HEX: FA
    百分比:99%  HEX: FC
    百分比:100%  HEX: FF
    ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值