Android命名规范

序:团队开发有一套自己的命名规范,方便大家review和code,今天我总结一下,后面有需要用到的,可以直接按这套走。


命名规范


命名中不可出现拼音或者中英文混用的命名,为了方便大家理解。

1.包名

包名全部小写,连续的单词只是简单地连接起来,不使用下划线。

采用反域名命名规则,全部使用小写字母。一级包名是顶级域名,通常为com,edu,gov,net,org等,二级包名为公司名,三级包名根据应用进行命名,四级包名为模块名或层级名。

注意:如果项目采用MVP,所有M、V、P抽取出来的接口都放置在相应模块的i包下,所有的实现都放置在相应模块的impl下。

2.类名

类名都以UpperCamelCase风格编写。

类名通常是名词或名词短语,接口名称有时可能是形容词或形容词短语。现在还没有特定的规则或行之有效的约定来命名注解类型。

名词,采用大驼峰命名法,尽量避免缩写,除非该缩写是众所周知的, 比如HTML,URL,如果类名称中包含单词缩写,则单词缩写的每个字母均应大写。

测试类的命名以它要测试的类的名称开始,以Test结束。例如:HashTest或HashIntegrationTest。

接口(interface):命名规则与类一样采用大驼峰命名法,多以able或ible结尾,如

interface Runnable、interface Accessible。

注意:如果项目采用MVP,所有Model、View、Presenter的接口都以I为前缀,不加后缀,其他的接口采用上述命名规则。

3.方法名

方法名都以lowerCamelCase风格编写。

方法名通常是动词或动词短语。

4.常量名

常量名命名模式为CONSTANT_CASE,全部字母大写,用下划线分隔单词。

5.非常量名

非常量字段名以lowerCamelCase风格的基础上改造为如下风格:基本结构为scopeVariableNameType。

scope:范围

非公有,非静态字段命名以m开头。

静态字段命名以s开头。

公有非静态字段命名以p开头。

公有静态字段(全局变量)命名以g开头。

例子:

public class MyClass{

int mPackagePrivate;

private int mPrivate;

protected int mProtected;

private static MyClass sSingleton;

public int pField;

public static int gField;

}

使用1字符前缀来表示作用范围,1个字符的前缀必须小写,前缀后面是由表意性强的一个单词或多个单词组成的名字,而且每个单词的首写字母大写,其它字母小写,这样保证了对变量名能够进行正确的断句。

6.参数名

参数名以lowerCamelCase风格编写。

参数应该避免用单个字符命名。

7.局部变量名

局部变量名以lowerCamelCase风格编写,比起其它类型的名称,局部变量名可以有更为宽松的缩写。

8.临时变量

临时变量通常被取名为i、j、k、m和n,它们一般用于整型;c、d、e,它们一般用于字符型。 如:for (int i = 0; i < len ; i++)。

9.类型变量名

类型变量可用以下两种风格之一进行命名:

单个的大写字母,后面可以跟一个数字(如:E,T,X,T2)。

以类命名方式(参考2.2 类名),后面加个大写的T(如:RequestT,FooBarT)。

更多还可参考~[阿里巴巴Java开发手册]


资源命名规范


1.资源布局文<XML文件>

全部采用小写下划线命名法。

a.contentView命名

必须以全部单词小写,单词间以下划线分割,使用名词或名词词组。

所有Activity或Fragment的contentView必须与其类名对应,对应规则为:将所有字母都转为小写,将类型和功能调换(也就是后缀变前缀)。

例如:activity_main.xml

b.Dialog命名

规则:dialog_描述.xml

例如:dialog_hint.xml

c.PopupWindow命名

规则:ppw_描述.xml

例如:ppw_info.xml

d. 列表项命名

规则:item_描述.xml

例如:item_city.xml

e.包含项命名

规则:模块_(位置)描述.xml

例如:activity_main_head.xml、activity_main_bottom.xml

注意:通用的包含项命名采用:项目名称缩写_描述.xml

例如:xxxx_title.xml

2.资源文件(图片drawable文件夹下)

全部小写,采用下划线命名法,加前缀区分

命名模式:可加后缀_small表示小图,_big表示大图,逻辑名称可由多个单词加下划线组成,采用以下规则:

用途_模块名_逻辑名称

用途_模块名_颜色

用途_逻辑名称

用途_颜色

例如:

如果有多种形态:如按钮选择器:btn_xx.xml(selector)


注意:使用AndroidStudio的插件SelectorChapek可以快速生成selector,前提是命名要规范。

3.动画文件(anim文件夹下)

全部小写,采用下划线命名法,加前缀区分。

具体动画采用以下规则:模块名_逻辑名称。

例如:refresh_progress.xml、market_cart_add.xml、market_cart_remove.xml。

4.values中name名称

a.colors的name命名使用下划线命名法,在你的colors.xml文件中应该只是映射颜色的名称一个ARGB值,而没有其它的。不要使用它为不同的按钮来定义ARGB值。

例子:


b.dimens也一样,要通用得去定义

例如:

c.strings.xml

strings的name命名使用下划线命名法,采用以下规则:模块名+逻辑名称。

d.styles.xml

几乎每个项目都需要适当的使用style文件,因为对于一个视图来说有一个重复的外观是很常见的,将所有的外观细节属性(colors、padding、font)放在style文件中。

5.layout中的id命名

命名模式为:view缩写_模块名_逻辑名,比如btn_main_search

使用AndroidStudio的插件ButterKnife Zelezny,生成注解非常方便,原生的话可以使用Android Code Generator插件


注释规范


1.类注释

具体可以在AS中自己配制,Settings → Editor → File and Code Templates → Includes → File Header,输入

/** *

*    author : ${USER}

*    e-mail : xxx@xx

*    time  : ${YEAR}/${MONTH}/${DAY}

*    desc  :

*    version: 1.0

*

*/

2.方法注释

每一个成员方法(包括自定义成员方法、覆盖方法、属性方法)的方法头都必须做方法头注释,在方法前一行输入/** + 回车或者设置Fix doc comment(Settings → Keymap → Fix doc comment)快捷键,AS便会帮你生成模板,我们只需要补全参数即可。


开发其他规范参考


1.合理布局,有效运用、、标签;

2.Activity和Fragment里面有许多重复的操作以及操作步骤,所以我们都需要提供一个BaseActivity和BaseFragment,让所有的Activity和Fragment都继承这个基类。

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

4.相关功能作为小区块放在一起(或者封装掉);

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

5.数据提供统一的入口。无论是在 MVP、MVC 还是 MVVM 中,提供一个统一的数据入口,都可以让代码变得更加易于维护。比如可使用一个DataManager,把http、preference、eventpost、database都放在DataManger里面进行操作,我们只需要与DataManger打交道;

6.多用组合, 少用继承;

7.提取方法, 去除重复代码。对于必要的工具类抽取也很重要,这在以后的项目中是可以重用的。

8.可引入 Dagger2 减少模块之间的耦合性。Dagger2 是一个依赖注入框架,使用代码自动生成创建依赖关系需要的代码。减少很多模板化的代码,更易于测试,降低耦合,创建可复用可互换的模块;

9.项目引入RxJava+RxAndroid这些响应式编程,可以极大的减少逻辑代码;

10.通过引入事件总线,如:EventBus、AndroidEventBus、RxBus,它允许我们在DataLayer中发送事件,以便ViewLayer中的多个组件都能够订阅到这些事件,减少回调;

11.使用AS自带的Lint来优化代码结构(什么,你不会?右键module、目录或者文件,选择Analyze → Inspect Code);

12.最后不要忘了内存泄漏的检测;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,012评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,589评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,819评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,652评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,954评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,381评论 1 210
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,687评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,404评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,082评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,355评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,880评论 1 255
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,249评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,864评论 3 232
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,007评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,760评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,394评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,281评论 2 259

推荐阅读更多精彩内容

  • 无论是哪种编程语言的学习,我们的命名都要有一定的规范才能更好的进行团队协作,更好的进行代码的的二次开发。所以在这里...
    李庆文阅读 628评论 2 3
  • 命名规范 1. 包命名 规则:包名全部小写,采用反域名命名规则,一级包名是顶级域名,通常为com, edu, go...
    聂顺阅读 751评论 0 2
  • 作者简介 原创微信公众号郭霖 WeChat ID: guolin_blog 大家早上好,新的一周开始啦! 本篇来自...
    木木00阅读 524评论 1 4
  • 命名规范 驼峰命名法:又称小驼峰命名法。除了首个单词首字母小写除外,其余所有单词所有首字母都要大写 帕斯卡命名法:...
    Y小圆脸阅读 828评论 0 0
  • 这是我高中时代的母校,焦作市第十一中学,学校很小,上学时经常嫌弃他,甚至连个像样的约会的地方都没有。可是,毕业后真...
    活在陆地上的鱼阅读 596评论 0 0