Java编程风格学习(三)

在上一篇的java编程风格学习(二)中咱们学习了一些在Java编码过程当中的格式规范,遵循这些规范毋庸置疑是咱们的书写高质量代码的前提与基础。今天咱们更进一步,一块儿来学习Java编程的命名规范,向着编写高质量代码的终极目标进发。java

(一)编程语言的通用规范

在详细介绍Java元素的命名规范以前咱们首先来看一下全部语言通用的一些编码规则。编程

1.名称应该有实际意义

当咱们为变量、方法、类或者常量命名的时候应该使用对阅读者来讲是具备实际意义的名称,避免使用单个字母或者通用名。 segmentfault

咱们首先来看下面这一段代码:服务器

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”。当领域或者目标行业已经存在通用术语时,开发人员就不该该再采用非通用术语或者本身造新词。this

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的文档规范。

相关文章
相关标签/搜索