Java编程风格学习(三)
在上一篇的java编程风格学习(二)中我们学习了一些在Java编码过程中的格式规范,遵循这些规范毋庸置疑是我们的书写高质量代码的前提与基础。今天我们更进一步,一起来学习Java编程的命名规范,向着编写高质量代码的终极目标进发。
(一)编程语言的通用规范
在详细介绍Java元素的命名规范之前我们首先来看一下所有语言通用的一些编码规则。
1.名称应该有实际意义
当我们为变量、方法、类或者常量命名的时候应该使用对阅读者来说是具有实际意义的名称,避免使用单个字母或者通用名。
我们首先来看下面这一段代码:
if (a < 65) {
y = 65 - a;
}
else {
y = 0;
}
在上面这段代码中,虽然我们能理清代码的执行过程,但是却不能判断出变量a和常数65的意义,这毫无疑问让我们很难理解这段代码的实际意义。
如果我们使用具有实际意义的名称来替换代码中的字母变量和常量,这段代码将十分容易理解。
if (age < RETIREMNT_AGE) {
yearsToRetirement = RETIREMNT_AGE - age;
}
else {
yearsToRetirement = 0;
}
这种命名规则有一个例外情况,就是临时变量的命名。
for (int i = 0; i < numberOfStudents; i++) {
enrollStudent(i);
}
临时变量的意义通过上下文的充足信息我们就可以判断出来,无需为其单独命名。
2.使用人们熟悉的名称
使用阅读者所熟悉的领域中的术语。如果阅读者习惯使用“customer”这个词,就不要使用“client”。当领域或者目标行业已经存在通用术语时,开发人员就不应该再采用非通用术语或者自己造新词。
3.谨慎使用过长的名称
如果类、接口、变量和方法的名称过长,那就说明这个实体的定义十分复杂。在给一个实体命名时,我们首先要考虑的是它的设计和用途,通过建立更具有针对性的类、接口、方法和变量来构成这些实体,并且给它们更简单有意义的名称。
4.不要使用只依赖大小写来区分的名字
虽然Java编译器可以区分那些大小写不同的名字,但是人在阅读时是很难注意到差别的,这就很容易对读者造成误导。
比如,变量theSQLInputStream和变量theSqlInputStream是不应该出现在同一个作用域的。
(二)Java语言编程规范
1.常量命名
常量的每个单词均大写,单词之间使用下划线连接。用大写字母命名常量可以和其他非final型变量相区分开。
class Byte {
public static final byte MAX_VALUE = 255;
public static final byte MIN_VALUE = 0;
}
2.变量命名
(1)使用名词来命名变量,变量名中的第一个单词小写,其后的每一个单词的第一个字母大写。
变量就是一个对象、事物,我们使用名称表示。大写能区分名词中的每一个单词,首字母小写则可以区分变量名和类名。
(2)集合引用名要使用复数形式
对象集合的字段和变量的名字要使用集合里包含的对象类型的复数形式,这便于区分多值变量和单值变量。
Customer[] customers = new Customer[MAX_CUSTOMERS];
void addCustomer(int index,Customer customer) {
this.customer[index] = customer;
}
Vector orderItems = new Vector();
void addOrderItems(OrdetItem orderItem) {
this.orderItems.addElement(orderItem);
}
(3)为不重要的临时变量建立一套标准名称
大多数变量的名字要使用完整的表述,但是也有很多经常出现的变量使用简写形式。
下面是几个比较常用的例子:
- 字符--------c,d,e
- 坐标--------x,y,z
- 异常--------e
- 图形--------g
- 对象--------o
- 流 ----------in,out
- 字符串-----s
(4)字段、参数命名
我们在使用构造方法或者set方法给字段赋值时,应该为参数名和字段使用相同名称,在方法内部使用this关键字来区分局部变量和字段变量。
class Student {
private String name;
public Student(String name) {
this.name = name;
}
public void setName(String name) {
this.name = name;
}
}
3.方法命名
(1)使用动词命名方法,方法名中的第一个单词小写,其后的每个单词的第一个字母大写。
方法表示动作,采用动词命名。大写可以把名字里的各个单词很明确的区分开,首字母小写则可以将方法调用和构造方法区分开。
class Account {
private int balance;
public Account(int balance) {
this.balance = balance;
}
public void withdraw(int amount) {
deposit(-1 * amount);
}
public void deposit(int amount) {
this.balance += amount;
}
}
(2)遵循JavaBeans中属性访问函数的方法的命名规范
JavaBeans规范为方法建立了一套命名规范,用来访问JavaBeans实现的属性。在任何类中定义方法都应该使用这些规范,无论是否实现了Bean。
JavaBean用is开头的方法公开boolean属性:
boolean isValid() {
return this.isValid;
}
JavaBean用get开头的方法对其他属性进行访问:
string getName() {
return this.name;
}
JavaBean用set开头的方法对属性进行写入操作:
void setName() {
this.name = name;
}
4.类命名
采用名词命名类,类名中的每个单词的第一个字母大写。
类用来定义对象或者事物,应该采用名词形式。大写可以明显地区分名字中各个单词,首字母大写则可以区分变量名以及类名或者接口名。
class CustomerAccount {
···
}
5.接口命名
采用名词或者形容词命名接口,接口中的每个单词的第一个字母大写。
接口描述一个对象的能力或者使声明对象能够提供的服务。
a.使用名词给作为服务声明的接口命名:
public interface ActionListener {
public void actionPerformed(ActionEvent e);
}
b.使用形容词来为描述某种能力的接口命名:
public interface Runnable {
public void run();
}
大多数的接口命名都是采用形容词,这些形容词由动词加上able或者ible后缀得来。更能表示接口是表示一种能力的本质含义。
6.包命名
(1)使用单独的小写动词作为每个包的根名
包名里必须包含一个单独的小写词,能够清晰体现包的用途。包名也可以包含一个有实际意义的缩写,例如Java标准包的java.io。
(2)用你所在组织的域名的倒序小写的形式作为包名字的根限定词
例如,一个公司的域名为 weikanwave.com,该公司发布了一款名为server的服务器应用程序,那么该公司将该包命名为com.weikanwave.server。
以上内容就是本篇文章的全部内容,如果有补充或者不妥之处还请各位不吝赐教,下一篇我们将学习Java的文档规范。
Java编程风格学习(三)的更多相关文章
- Java编程风格学习(二)
二.格式规范 在上一篇的Java编程风格学习(一)中我们讲述了在Java编码中的一般原则,虽然这些原则并不涉及具体的代码规范,但是这些原则却是我们在Java开发过程中所应该遵循的规范与思想.今天我们将 ...
- Java编程风格学习(一)
最近在看一本有关Java编程规范的书,书中精炼阐述了使用java语言时应该遵循的一些原则.接下来的一段时间我将在这里总结我的学习内容,也希望这一系列文章能够对有需要的人有所帮助.不考虑任何编码规范的代 ...
- Java编程思想学习(三) 初始化与清理
1. 每个重载的方法都必须有独一无二的参数类型列表.(参数顺序的不同也足以区分两个方法,但不建议这样做,会使代码难以维护.) 2. 方法重载时,如果可以重载的方法间只是参数类型不同,传入的数据类型(实 ...
- Java编程思想学习(三)----第三章:操作符
3.2使用Java操作符 操作符接受一个或多个参数,并生成一个新值. 操作符作用于操作数,生成一个新值.有些操作符可以改变操作数自身的值.几乎所以的操作符都只能操作“基本类型”.例外的操作符有“=”, ...
- Java学习笔记(四)——google java编程风格指南(上)
[前面的话] 年后开始正式上班,计划着想做很多事情,但是总会有这样那样的打扰,不知道是自己要求太高还是自我的奋斗意识不够?接下来好好加油.好好学学技术,好好学习英语,好好学习做点自己喜欢的事情,趁着自 ...
- Java学习笔记(五)——google java编程风格指南(中)
[前面的话] 年后开始正式上班,计划着想做很多事情,但是总会有这样那样的打扰,不知道是自己要求太高还是自我的奋斗意识不够?接下来好好加油.好好学学技术,好好学习英语,好好学习做点自己喜欢的事情,趁着自 ...
- Java学习笔记(六)——google java编程风格指南(下)
[前面的话] 年后开始正式上班,计划着想做很多事情,但是总会有这样那样的打扰,不知道是自己要求太高还是自我的奋斗意识不够?接下来好好加油.好好学学技术,好好学习英语,好好学习做点自己喜欢的事情,趁着自 ...
- Google Java编程风格指南
出处:http://hawstein.com/posts/google-java-style.html 声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Comm ...
- Google Java编程风格指南中文版
作者:Hawstein出处:http://hawstein.com/posts/google-java-style.html声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Cre ...
随机推荐
- UVa 336 - A Node Too Far
题目大意:在计算机网络中,每条信息都有一个TTL值,在信息到达一个节点时,TTL值首先减1,如果TTL为0,则丢弃该信息报文.给一个网络的配置,给定源点和TTL值,判断该网络中有多少节点不可到达. 无 ...
- linux下的5款桌面环境
以前都用Ubuntu,没有换过桌面环境,不会换,也担心换了不会(真是有病,担心用不习惯,还不如回去用windows) ubuntu 默认的是Unity,用过一段不长的时间,恩,说不出来有什么不好的,也 ...
- 创建iwatch 程序选项
include complication :包含自定义表盘事件 include glance scene:包含缩略图事件
- loading.io一个loading图标网站,跟大家分享
loading.io是官方网址在首页选一款loading图标,看到左上角的 Try it now中有选中的图标后,可通过光标滑动选择图标大小,然后再点右边的get svg或get css等下载即可
- http的Max-Forwards头的作用(转)
请求头的Max-Forwards用来请求特定代理.当代理收到一个允许URI转发的OPTIONS请求,则检查Max-Forwards.如果Max-Forwards值为0,则不能转发该消息:相反,代理会将 ...
- 简单java web应用程序搭建与部署
1. 准备工作 工具:tomcat.editplus.jdk.windows操作系统 操作:在windows操作系统上安装jdk.tomcat.editplus,配置JAVA_HOME,Path,CL ...
- treegrid.bootstrap使用说明
treegrid.bootstrap使用说明 这个插件是用来做有层次的表格的,大概如图: 官网 http://maxazan.github.io/jquery-treegrid/ 使用这个控件之前需 ...
- mybatis判断集合为空或者元素个数为零
mybatis判断集合为空或者元素个数为零: <if test="mlhs != null and mlhs.size() != 0"> and t.mlh_name ...
- xmlns:xsi ——是指xml文件遵守xml规范,xsi全名:xml schema instance
http://blog.sina.com.cn/s/blog_4b6f8d150100nx3e.html http://blog.csdn.net/iaiti/article/details/4226 ...
- lufylegend库 鼠标事件 循环事件 键盘事件
lufylegend库 鼠标事件 循环事件 键盘事件 <!DOCTYPE html> <html lang="en"> <head> <m ...