阿里巴巴java开发手册第一章

命名不能以下划线或美元进行开始和结尾

//反面教材

private String _name;

private Integer $Object;

private boolean name_;

private BigDecimal Object$;

禁止使用拼音和英文的并用,禁止直接使用拼音和中文(知名的拼音等同于英文)

//反面教材

private String DaZhePromotion;//[打折]

//正面教材

private String taobao;

需要使用驼峰样式的命名

1).类名,MarcoPolo,但是类名的开头必须为大写

2).方法名

3).参数名

4).成员变量

5).局部变量

常量全部大写,单词之间用下划线隔开

//正面教材

private String MAX_STOCK_COUNT;

DTO,POJO,JO类中布尔型的成员变量不要以is开头

说明:定义为基本数据类型Boolean isDeleted的属性,它的方法也是isDeleted(),RPC框架在反向解析的时候,“以为”对应的属性名称是 deleted,导致属性获取不到,进而抛出异常。

数组定义时,中括号放置在类型后面,禁止放置在变量名后面

//正面教材

String[] params = new String[5];

对于使用了设计模式的类在命名时要体现

//正面教材

class OrderFactory:工厂模式

class LoginProy:代理模式

class ResourceObserver:观察者模式

对于long长整型的定义禁止使用l,要使用L

//反面教材

private longa = 2l;//像这样的定义在一定程度上会与数字21混淆

类内部定义方法的顺序(推荐)

公有方法或保护方法 > 私有方法 > getter/setter 方法

说明:公有方法是类的调用者和维护者最关心的方法,首屏展示最好;保护方法虽然只是子类

关心,也可能是“模板设计模式”下的核心方法;而私有方法外部一般不需要特别关心,是一个

黑盒实现;因为方法信息价值较低,所有Service和DAO的getter/setter方法放在类体最

后。

接口的名字要以Impl结尾

如InterfaceMethodNameStyleImpl

接口的名字也可以如此命名:以I(大写的i)开头,以Service结尾,如IUserService

接口中的方法和属性不要加任何的修饰符

//反面教材

public void f();

public String xxx = "hello world";

//正面教材

void update();

Object的equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用equals


所有的相同类型的包装类对象之间值的比较,全部使用equals方法比较

说明:对于Integer var= ?在-128至127范围内的赋值,Integer对象是在IntegerCache.cache产生,会复用已有对象,这个区间内的Integer值可以直接使用==进行判断,但是这个区间之外的所有数据,都会在堆上产生,并不会复用已有对象,这是一个大坑,推荐使用equals方法进行判断。


循环体内,字符串的连接方式,使用StringBuilder的append方法进行扩展。

说明:反编译出的字节码文件显示每次循环都会new出一个StringBuilder对象,然后进行append操作,最后通过toString方法返回String对象,造成内存资源浪费。

类成员与方法访问控制从严

1)如果不允许外部直接通过new来创建对象,那么构造方法必须是private。2)工具类不允许有public或default构造方法。

3)类非static成员变量并且与子类共享,必须是protected。

4)类非static成员变量并且仅在本类使用,必须是private。

5)类static成员变量如果仅在本类使用,必须是private。

6)若是static成员变量,必须考虑是否为final。

7)类成员方法只供类内部调用,必须是private。

8)类成员方法只对继承类公开,那么限制为protected。

说明:任何类、方法、参数、变量,严控访问范围。过于宽泛的访问范围,不利于模块解耦。

思考:如果是一个private的方法,想删除就删除,可是一个public的service方法,或者

一个public的成员变量,删除一下,不得手心冒点汗吗?变量像自己的小孩,尽量在自己的

视线内,变量作用域太大,如果无限制的到处跑,那么你会担心的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容