docs/src/basic-extra-meal/java-naming.md
“二哥,Java 中的命名约定都有哪些呢?”三妹的脸上泛着甜甜的笑容,她开始对接下来要学习的内容充满期待了,这正是我感到欣慰的地方。
“对于我们中国人来说,名字也是有讲究的,比如说我叫沉默王二,你就叫沉默王三,哈哈。”我笑着对三妹说。
命名约定决定我们使用什么样的标识符来命名包、类、字段、方法等等,虽然这个规则不是强制的,可以遵守,也可以不遵守,但如果不遵守的话,就会带来很多不必要的麻烦。
起个好的名字,就好像穿一件得体的衣服,呈现给人的用户体验是完全不一样的。
好的命名可以让你的代码更易读,包括你自己和你的小伙伴,看一眼,不用想太多,就能明白代码是干嘛的。
拿我这个笔名“沉默王二”来举例吧,读起来我就觉得朗朗上口,读者看到这个笔名就知道我是一个什么样的人——对不熟的人保持沉默,对熟的人妙语连珠,哈哈。
当然了,如果你暂时记不住也没关系,后面再回头来记一下就好了。
包的命名应该遵守以下规则:
com.itwanger.util 不能是 com.itwanger.utilspackage com.itwanger。类的命名应该遵守以下规则:
另外,如果是抽象类的话,使用 Abstract 或 Base 开头;如果是异常类的话,使用 Exception 结尾;如果是测试类的话,使用 Test 结尾。
接口的命名应该遵守以下规则:
来看个例子:
interface Printable {}
接口和实现类之间也有一些规则:
字段和变量的命名应该遵守以下规则:
firstNameint a,除非是局部变量int[] arrayDemo,main 方法中字符串数组参数不应该写成 String args[]反例:
public class ConfusingName {
public int stock;
// 非 setter/getter 的参数名称,不允许与本类成员变量同名
public void get(String alibaba) {
if (condition) {
final int money = 666;
// ...
}
for (int i = 0; i < 10; i++) {
// 在同一方法体中,不允许与其它代码块中的 money 命名相同 final int money = 15978;
// ...
}
}
}
class Son extends ConfusingName {
// 不允许与父类的成员变量名称相同 public int stock;
}
常量的命名应该遵守以下规则:
MAX_PRIORITY,力求语义表达完整清楚,不要嫌名字长来看个例子:
static final int MIN_AGE = 18;
方法的命名应该遵守以下规则:
print()actionPerformed()来看个例子:
void writeBook(){}
Service/DAO 层的方法命名规约:
除了以上这些规则以外,还有一些共同的规则需要遵守,比如说:
_name / __name / $name / name_ / name$ / name__DaZhePromotion [打折] / getPingfenByName() [评分] / String fw[福娃] / int 某变量 = 3RIBENGUIZI / Asan / blackList / whiteList / slavestartTime / workQueue / nameList / TERMINATED_THREAD_COUNTpublic class OrderFactory;public class LoginProxy;public class ResourceObserver;枚举名字为 ProcessStatusEnum 的成员名称:SUCCESS / UNKNOWN_REASON。GitHub 上标星 10000+ 的开源知识库《二哥的 Java 进阶之路》第一版 PDF 终于来了!包括Java基础语法、数组&字符串、OOP、集合框架、Java IO、异常处理、Java 新特性、网络编程、NIO、并发编程、JVM等等,共计 32 万余字,500+张手绘图,可以说是通俗易懂、风趣幽默……详情戳:太赞了,GitHub 上标星 10000+ 的 Java 教程
微信搜 沉默王二 或扫描下方二维码关注二哥的原创公众号沉默王二,回复 222 即可免费领取。