Java编码规范--命名风格

        编码规范指的是本身这么写没什么问题,但不建议这么写。

 

1.代码中的命名均不能下划线或美元符号开始,也不能下划线或美元符号结束。

//错误示例
String _name,__name,$name,name_,name$;

        为啥呢,因为这俩符号本身没啥意义。

        另外其实$符号在js中应用是比较多的,_在Python中的应用是比较多的。不同的语言是有不同的理念的,但在Java中,这俩符号你写在前面或者后面是没啥意义的。

        当然,当你定义常量的时候是可以用在中间的。

        拓展:

数字键盘上的~是表示“位非”操作,运算符,啥意思呢,就是首先将当前变量转换成二进制,然后所有位取反 比如原本是1,位非操作后就变成0,原本是0,位非操作后就是1。

 int a=10;
 System.out.println(~a);

输出结果:

符号描述
~运算符 为非运算,上面说了
!      运算符 布尔类型的非
@       注解使用,这不用多说了
#在注释中 使用#+方法名,可以跳转到该方法
%       取模运算
^异或运算 相同为0,不同为1
&与运算符 有1为1,全0为0
*乘号
(左括号
)右括号号
=等于号

2.所有编程相关的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。

        说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,纯拼音命名的方式更要避免采用。

//正确示例 ali,alibaba,taobao,hangzhou;

//错误示例 DaZhePromotion[打折], getPingFenName()[评分] String fw[福娃] int 数量=3

 3.代码和注释中都要避免使用任何带有种族歧视性的词语。

//正确示例 日本人 印度人 非洲人  blockList  allowList secondary

//错误示例 RIBENGUIZI ASAN HEIGUI blackList whiteList slave

4.类名使用UpperCamelCase风格(首字母大写驼峰命名法),但一下情况除外:DO、BO、DTO、VO、AO、PO、UID等。

//正例:ForceCode  UserDO  HtmlDTO  XmlService  TcpUdpDeal  TaPromotion
        
//反例:forcecode  UserDo  HTMLDto  XMLService  TCPUDPDeal  TAPromotion 

5.方法名、参数名、成员变量、局部变量统一使用lowerCamelCase(首字母小写的驼峰命名)风格。

//正例:localValue getHttpMessage() inputUserId

6.常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长

//正例:MAX_STOCK_COUNT  CACHE_EXPIRED_TIME
        
//反例:MAX_COUNT  EXPIRED_TIME

7.抽象类命名使用Abstract开头;异常类命名使用Exception结尾;测试类命名要以他测试类的名字+Test结尾。

        拓展:

        有些说法说抽象类也可以用Base开头,但我不建议这么做,因为有些包里面,Base开头的是基础类而不是抽象类,用Base容易混淆。

中场休息:

8.类型与中括号紧挨相连来表示数组。

//正例  String[] strArray = {};
        
//反例  String dataArray[] = {};

9.POJO类中的任何布尔型变量,都不要加is前缀,否则部分框架解析会引起序列化错误。 

        啥意思的,我们来看一下代码,

        我们新建一个Student类型,里面有一个boolean类型的isDeleted属性,当我们生成get()方法时,生成的是isDeleted();

package com.alicodestandard.bean;

/**
 * @ClassName Student
 * @Author wangshuo
 * @Date 15:16 2022/6/30
 * @Description TODO
 **/
public class Student {
    private boolean isDeleted;

    public boolean isDeleted() {
        return isDeleted;
    }

    public void setDeleted(boolean deleted) {
        isDeleted = deleted;
    }
}

        如果将idDeleted属性换为deleted,生成get方法的时候,也会生成isDeleted();

package com.alicodestandard.bean;

/**
 * @ClassName Student
 * @Author wangshuo
 * @Date 15:16 2022/6/30
 * @Description TODO
 **/
public class Student {
    private boolean deleted;

    public boolean isDeleted() {
        return deleted;
    }

    public void setDeleted(boolean deleted) {
        this.deleted = deleted;
    }
}

        所以当有些框架序列化时,发现isDeleted()的get方法,会误以为是有一个deleted属性,所以当你属性值为isDeleted时,会产生序列化问题。

10.包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词,包名统一使用单数形式,但类名如果有复数含义,类名可以使用复数形式。

11.避免在子父类的成员变量之间、或者不同代码块的局部变量之间采用完全相同的命名,使可理解性降低。

12.杜绝完全不规范的缩写,避免望文不知义。

//反例:AbstractClass缩写为absClass(我™还以为是“防抱死类“嘞)
// condition缩写为condi;function缩写为fu,此种随意缩写严重影响了代码的可阅读性
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值