名词,采用大驼峰命名法,尽量避免缩写,除非该缩写是众所周知的, 比如 HTML、URL,如果类名称中包含单词缩写,则单词缩写的每个字母均应大写。
类 | 描述 | 例如 |
---|---|---|
Activity 类 |
Activity 为后缀标识 |
欢迎页面类 WelcomeActivity |
Adapter 类 |
Adapter 为后缀标识 |
新闻详情适配器 NewsDetailAdapter |
解析类 | Parser 为后缀标识 |
首页解析类 HomePosterParser |
工具方法类 | Utils 或 Manager 为后缀标识 |
线程池管理类:ThreadPoolManager |
日志工具类:LogUtils
(Logger
也可)
打印工具类:PrinterUtils
|
| 数据库类 | 以 DBHelper
后缀标识 | 新闻数据库:NewsDBHelper
|
| Service
类 | 以 Service
为后缀标识 | 时间服务 TimeService
|
| BroadcastReceiver
类 | 以 Receiver
为后缀标识 | 推送接收 JPushReceiver
|
| ContentProvider
类 | 以 Provider
为后缀标识 | ShareProvider
|
| 自定义的共享基础类 | 以 Base
开头 | BaseActivity
, BaseFragment
|
测试类的命名以它要测试的类的名称开始,以 Test 结束。例如:HashTest
或 HashIntegrationTest
。
接口(interface):命名规则与类一样采用大驼峰命名法,多以 able 或 ible 结尾,如 interface Runnable
、interface Accessible
。
注意:如果项目采用 MVP,所有 Model、View、Presenter 的接口都以 I 为前缀,不加后缀,其他的接口采用上述命名规则。
3.3 方法名
方法名都以 lowerCamelCase
风格编写。
方法名通常是动词或动词短语。
方法 | 说明 |
---|---|
initXX() |
初始化相关方法,使用 init 为前缀标识,如初始化布局 initView() |
isXX() , checkXX() |
方法返回值为 boolean 型的请使用 is/check 为前缀标识 |
getXX() |
返回某个值的方法,使用 get 为前缀标识 |
setXX() |
设置某个属性值 |
handleXX() , processXX() |
对数据进行处理的方法 |
displayXX() , showXX() |
弹出提示框和提示信息,使用 display/show 为前缀标识 |
updateXX() |
更新数据 |
saveXX() , insertXX() |
保存或插入数据 |
resetXX() |
重置数据 |
clearXX() |
清除数据 |
removeXX() , deleteXX() |
移除数据或者视图等,如 removeView() |
drawXX() |
绘制数据或效果相关的,使用 draw 前缀标识 |
3.4 常量名
常量名命名模式为 CONSTANT_CASE
,全部字母大写,用下划线分隔单词。那到底什么算是一个常量?
每个常量都是一个 static final
字段,但不是所有 static final
字段都是常量。在决定一个字段是否是一个常量时,得考虑它是否真的感觉像是一个常量。例如,如果观测任何一个该实例的状态是可变的,则它几乎肯定不会是一个常量。只是永远不打算改变的对象一般是不够的,它要真的一直不变才能将它示为常量。
// Constants
static final int NUMBER = 5;
static final ImmutableListNAMES = ImmutableList.of(“Ed”, “Ann”);
static final Joiner COMMA_JOINER = Joiner.on(’,’); // because Joiner is immutable
static final SomeMutableType[] EMPTY_ARRAY = {};
enum SomeEnum { ENUM_CONSTANT }
// Not constants
static String nonFinal = “non-final”;
final String nonStatic = “non-static”;
static final SetmutableCollection = new HashSet();
static final ImmutableSetmutableElements = ImmutableSet.of(mutable);
static final Logger logger = Logger.getLogger(MyClass.getName());
static final String[] nonEmptyArray = {“these”, “can”, “change”};
3.5 非常量字段名
非常量字段名以 lowerCamelCase
风格的基础上改造为如下风格:基本结构为 scope{Type0}VariableName{Type1}
、type0VariableName{Type1}
、variableName{Type1}
。
说明:{}
中的内容为可选。
注意:所有的 VO(值对象)统一采用标准的 lowerCamelCase 风格编写,所有的 DTO(数据传输对象)就按照接口文档中定义的字段名编写。
3.5.1 scope(范围)
非公有,非静态字段命名以 m
开头。
静态字段命名以 s
开头。
其他字段以小写字母开头。
例如:
public class MyClass {
public int publicField;
private static MyClass sSingleton;
int mPackagePrivate;
private int mPrivate;
protected int mProtected;
}
使用 1 个字符前缀来表示作用范围,1 个字符的前缀必须小写,前缀后面是由表意性强的一个单词或多个单词组成的名字,而且每个单词的首写字母大写,其它字母小写,这样保证了对变量名能够进行正确的断句。
3.5.2 Type0(控件类型)
考虑到 Android 众多的 UI 控件,为避免控件和普通成员变量混淆以及更好地表达意思,所有用来表示控件的成员变量统一加上控件缩写作为前缀(具体见附录 UI 控件缩写表)。
例如:mIvAvatar
、rvBooks
、flContainer
。
3.5.3 VariableName(变量名)
变量名中可能会出现量词,我们需要创建统一的量词,它们更容易理解,也更容易搜索。
例如:mFirstBook
、mPreBook
、curBook
。
量词列表 | 量词后缀说明 |
---|---|
First |
一组变量中的第一个 |
Last |
一组变量中的最后一个 |
Next |
一组变量中的下一个 |
Pre |
一组变量中的上一个 |
Cur |
一组变量中的当前变量 |
3.5.4 Type1(数据类型)
对于表示集合或者数组的非常量字段名,我们可以添加后缀来增强字段的可读性,比如:
集合添加如下后缀:List、Map、Set。
数组添加如下后缀:Arr。
例如:mIvAvatarList
、userArr
、firstNameSet
。
注意:如果数据类型不确定的话,比如表示的是很多书,那么使用其复数形式来表示也可,例如
mBooks
。
3.6 参数名
参数名以 lowerCamelCase
风格编写,参数应该避免用单个字符命名。