接口命名
21 使用名词或者形容词命名接口
一个接口是用来声明一个对象的所能提供的服务或者能力。
用名词来命名标示服务的接口
public interface ActionListener{
public void actionPerformed(ActionEvnet e);
}
用形容词来命名标示能力的接口,大多数接口都是用able,或者ible作为一个动词的后缀
public interface Runnable{
public void run();
}
public interface Accessible {
public Context getContext();
}
方法命名
22 小写第一个单词,后面的所有单词只有首字母大写。
每个单词首字母大写是为了区分每个单词,首个单词小写是为了区分方法和构造函数。
class MyImage extends Image{
public MyImage() {
}
public void flush() {
}
public Image getScaledInstance() {
}
}
23 用动词命名方法
方法(Method) 和 操作(operations)通常定义的是动作(action)所以用动词
class Account {
private int balance;
public void withDraw(int amount) {
deposit(-1 * amout);
}
public void deposit(int amount) {
this.balance += amount;
}
}
24 存取属性方法,遵循JavaBean 的命名规则。
JavaBean 规范(specification)为属性的访问,建了一些命名规范。当你实现一个javaBean的时候,你需要遵循这些命名规范。
一个JavaBean暴露boolean属性通常使用一个以is开头的方法
boolean isValid(){
return this.vlid;
}
访问其他类型的属性时使用get开头的方法
String getName() {
return this.name;
}
访问一个有index属性的方法带有一个int类型的参数(index)
String getAlias(int index) {
return this.aliases(index);
}
设置一个属性的值用set开头的方法
void setValid(boolean valid) {
this.valid = valid;
}
void setName(String name){
this.name = name;
}
设置一个有index的属性,增加index参数
void setAlias(int index, String alias){
this.aliases[index] = alias;
}
变量名称
25小写第一个单词,后面的所有单词只有首字母大写。
每个单词首字母大写是为了区分每个单词,首个单词小写是为了区分变量名称和类名称。
class Customer {
private Address address;
private Phone daytimePhone;
public void setDaytimePhone(Phone daytimePhone) {
....
}
}
26 使用名词来命名一个变量
变量用来指向一个对象或者事物。所以用名词定义
class Customer {
private Address billingAddress;
private Address shippingAddress;
private Phone daytimePhone;
private Vector openOrders;
}
27 使用复数定义集合的参考
使用复数定义一个集合的参考,可以使读者分辨出变量是指向单一值还是复数值。
Customer[] customers = new Customer[MAX_CUSTOMERS];
Vector orderItems = new Vector();
28 使用一组标准的名称
你需要用符合地描述一个变量的名称,但是有一些变量出现的频率非常得多,你可以选择的使用这些“速记”的名称。下面是一些基本的:
Character c,d,e
Coordinate x,y,z
Exception e
Graphics g
Object o
Stream in,out,inOut
String s
Int i
字段命名
29 用this来标示一个类的变量
public class AtomicAdder {
private int count;
public AtomicAdder(int count) {
this.count = count;
}
public int addAndFetch(int value) {
return this.count += value;
}
}
参数变量
30 如果一个构造函数 或者“set”方法的一个参数指派到一个字段的话,那么参数使用和字段相同的名称
提供相同的名称可以使阅读代码的人知道参数是为了给相同名的字段设置值得。
class Dude {
private String name;
public Dude(String name) {
this.name = name;
}
public setName(String name) {
this.name = name;
}
}
常量命名
31 所有字母大写,用下划线来分割每个单词
全部大写是为了区分其他非常量的变量。
public class Types {
public final static int BIT = -7;
public final static int TINYINT = -6;
public final static int SMALLINT = 5;
public final static int INTEGER = 4;
public final static int BIGINT = -5;
public final static int FLOAT = 6;
}