对于像笔者这样的初学者而言。在程序开发的过程中,对于方法、属性、类的命名,往往是一种困扰。
我们希望自己的命名方式简单易理解,同时也希望这种方式能够与整个行业所接轨。
对于Java开发而言,一种广泛使用的命名方式能够满足这些需求。这就是驼峰命名法(Camel Case)。
在学习过程中,想必大家也不止一次听过这个名词。然而怎样的代码才符合驼峰命名,可能部分同学就知之甚少了。
笔者也曾困扰于这个问题,所以想通过本文,简单的介绍一下驼峰命名法。既是作为备忘,也希望能为一些还在为编码规则困扰的同学带来帮助。
命名规约
包名应为名词或名词性短语,全为小写
【扩展】包名统一使用单数形式。
类名为名词或名词性短语,各单词首字母大写(XmlService)
【扩展】抽象类命名使用Abstract或Base开头;异常类命名使用Exception结尾;测试类命名以它要测试的类名开始,以Test结尾。
接口命名规则同类名命名规则
【扩展】对于Service和DAO类,基于SOA的理念,暴露出来的服务一定是接口,内部的实现类用Impl后缀与接口区别。
【扩展】如果是形容能力的接口名称,取对应的形容词为接口名(通常是-able的形式)。
方法名应为动词或动宾短语,首字小写,其余各单词首字母大写(getHttpMessage)
设置或读取属性的getter/setter方法,命名为getXxx()/setXxx(),其中Xxx为属性名词,首字母大写
成员变量名应为名词或名词性短语,首字母小写,其余单词首字母大写(inputUserid)
常量名全部大写,为名词或名词性短语,多个单词之间采用“_”分隔(CACHE_EXPIRED_TIME)
代码实践
根据以上规则,这里给出笔者的对于以上规约的一个代码实现。
/*
包名:应为名词或名词性短语,全部小写
一般为公司网址倒写
如:com.公司名.项目名.模块名.子模块名 ........
*/
package com.company.module.submodule;
/**
* @Author: Eric Wang
* @Time: 2019-05-17 15:25
* @Content: 驼峰命名法实践
* */
//类名、接口名:应为名词或名词性短语,各单词首字母大写
public class CamelCase implements DemoInterface{
//变量名:应为名词或名词性短语,首字母小写,其余单词首字母大写
private String stuName;
private String stuPwd;
//常量名:应为名词或名词性短语,全部大写,多个单词间以“_”分隔
private int MIN_AGE = 0;
private int MAX_AGE = 100;
//方法名:应为动词或动宾短语,首字母小写,其余首字母大写
public void printStuInfo(){
System.out.println("My name is"+this.stuName);
}
//设置或读取属性的get/set方法:命名为setXxx()或getXxx()
//其中Xxx为首字母大写的对应属性名
public void setStuName(String stuName){
this.stuName = stuName;
}
public String getStuName(){
return this.stuName;
}
public void printMaxLiveAge(){
//运算符与运算数之间要用空格间隔
int maxLiveAge = MAX_AGE - MIN_AGE;
System.out.println("The MaxLiveAge is: " + maxLiveAge);
}
}
其它规约
一些其他的编码规约如下。这些规约都遵循《阿里巴巴Java开发手册》。
代码缩进采用4个空格缩进,禁止使用Tab制表符
大括号使用约定。若大括号内为空,则简洁的写成{ }即可;如果是非空代码块,则:
- 左大括号不换行
- 左大括号后换行
- 右大括号前换行
- 右大括号后还有else等代码则不换行;表示终止的右大括号必须换行
左、右小括号和字符间不出现空格
if / for / while / switch / do 等保留字与括号之间都必须加空格
任何二目、三目运算符的左右两边都必须加一个空格
... ...
以上内容是笔者在学习过程中对于编码规范的心得。
每个编码者都有自己的习惯,这些习惯并无好坏之说,但是一种强制的规约,能够保证整个项目中的各部分代码高度的兼容性和规范程度。能够避免因为编码规范不同产生无谓的分歧,以及对精力的无端消耗。
以上内容,挂一漏万。如有缺漏,欢迎大家指正。

537

被折叠的 条评论
为什么被折叠?



