一句话:人无我有,人有我好,人好我早,人多我早。这句话适用于业务,也适用于学习。当一项新技术别人都不懂的时候,你就懂了,恭喜你,你已经遥遥领先了;别人懂了,你更会做,那你就牛了;他精通早,还是有优势的吧?强调一下,《教妹学 Java》是针对Java零基础爱好者的。希望能够帮助同学们轻松进入编程世界的大门,为后续的深入学习打下坚实的基础。“二哥,Java的命名规范是怎样的?”三姐脸上带着甜甜的笑容,开始期待接下来要学习的内容,这也是我感到欣慰的地方。“对于我们中国人来说,名字也是有讲究的,比如我叫神魔王二,你叫魔魔王三,哈哈。”我笑着对三姐说道。命名约定决定了我们用什么样的标识符来命名包、类、字段、方法等。这个规则虽然不是强制性的,可以遵循也可以不遵循,但是如果不遵循,会带来很多不必要的麻烦。选择一个好名字就像穿一件得体的衣服。呈现给人们的用户体验是完全不同的。好的命名可以让你的代码更具可读性,包括你自己和你的小伙伴,一眼就能看懂代码做了什么,不用想太多。以我的笔名“沉默王二”为例。我读的时候觉得它很吸引人。读者看到这个笔名就知道我是一个什么样的人——对不熟悉的人保持沉默,对熟悉的人保持沉默。妙语连珠,哈哈。01.包的命名应遵循以下规则:英文单词包名全部为小写字母,点分隔符之间只有一个自然语义,应为单数形式。例如,com.itwanger.util不能是com.itwanger.utils在最新的Java编程规范中,要求开发人员在他们定义的包名之前添加一个唯一的前缀。由于互联网上的域名是不重复的,所以大多数开发者都使用自己公司(或个人博客)在互联网上的域名作为包的唯一前缀。比如我文章中的代码示例的包名是packagecom.itwanger。02.类(classes)的命名要遵循以下规则:必须以大写字母开头,最好是名词。例如System类名采用UpperCamelCase(驼峰式命名)风格,尽量不省略单词的首字母,但以下情况除外:DO/BO/DTO/VO/AO/PO/UID等.另外,如果是抽象类,则以Abstract或Base开头;如果是异常类,最后使用Exception;如果是测试类,最后??使用Test。03.Interface(接口)接口的命名要遵守以下规则:必须以大写字母开头,最好是形容词,比如Runnable,尽量不要省略单词的首字母看一个例子:interfacePrintable{}接口和实现类之间也有一些规则:实现类使用Impl的后缀来区别于接口。例如CacheServiceImpl实现了CacheService接口或者AbstractTranslator实现了Translatable接口04.字段和变量的命名要遵循以下规则:必须以小写字母开头,可以包含多个单词。第一个单词的首字母小写,其他单词的首字母大写。比如firstName最好不要使用单个字符,比如inta,除非局部变量类型用方括号紧密连接来表示一个数组,比如int[]arrayDemo,main方法中的string数组参数应该不能写成Stringargs[]POJO类中的任何布尔变量,不要加is前缀,否则部分框架解析会导致序列化错误,我知道fastjson避免子类和父类的成员变量使用完全相同的命名类,或不同代码块的局部变量之间,这会降低可理解性。子类和父类成员变量名相同,即使是public类型的变量也可以编译。另外,局部变量在同一个方法的不同代码块中同名是合法的。必须避免这些情况。反例:publicclassConfusingName{publicintstock;//不是setter/getter的参数名不允许与该类的成员变量重名publicvoidget(Stringalibaba){if(condition){finalintmoney=666;//...}for(inti=0;i<10;i++){//在同一个方法体中,不允许在其他代码块中与money同名finalintmoney=15978;//.....和单词用“_”连接,比如MAX_PRIORITY,力求完整清晰的语义表达。如果名称太长,可以包含数字,但不能以数字开头。我们来看一个例子:staticfinalintMIN_AGE=18;06。方法的命名要遵循以下规则:必须以小写字母开头,最好是动词,比如print()可以包含多个单词,第一个单词的首字母小写,其他单词的首字母大写,比如actionPerformed()看例子:voidwriteBook(){}服务/DAO层方法命名约定:获取单个对象获取多个对象的方法以list为前缀,复数结尾,如:listObjects方法获取统计值的方法以count为前缀,插入的方法以save/insert为前缀,删除的方法以remove/delete为前缀,修改的方法以update为前缀。07.小结除了上述规则外,还有一些通用的规则需要遵守,例如:代码中的名称不能以下划线或美元符号开头,也不能以下划线或美元符号结尾.反例:_name/__name/$name/name_/name$/name__所有编程相关的命名都严禁使用拼音和英文,也不允许直接使用中文。反例:DaZhePromotion[discount]/getPingfenByName()[score]/Stringfw[Fuwa]/intacertainvariable=3避免在代码和注释中使用任何语言的种族歧视词语。反例:RIBENGUIZI/Asan/blackList/whiteList/slave方法名、参数名、成员变量、局部变量统一使用lowerCamelCase风格。杜绝完全不规范的缩略语,避免意思不明。反例:AbstractClass“缩写”成AbsClass;条件“缩写”为condi;命名常量和变量时,将表示类型的名词放在词尾,以提高识别度。正例:startTime/workQueue/nameList/TERMINATED_THREAD_COUNT如果modules,interfaces,classes,methods使用了设计模式,具体的模式需要体现在命名上。将设计模式体现在名称中,有助于读者快速理解架构设计理念。例如:publicclassOrderFactory;公共类登录代理;公共类ResourceObserver;枚举类枚举成员名以Enum为后缀,枚举成员名需全部大写,单词之间用下划线分隔。枚举其实是特殊的常量类,构造方法默认强制私有。例如:枚举名称的成员名称为ProcessStatusEnum:SUCCESS/UNKNOWN_REASON。”好了,三姐,Java中的命名规范就说这么多吧,平时写代码要注意,养成好习惯。转我之后”脖子一僵,我对三姐说道。“好了,二哥,你辛苦了。关于命名约定有很多说法。真是知道的越多,不知道的越多。“啊。”
