`
sinokaka
  • 浏览: 320014 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

命名原则(1)

    博客分类:
  • java
阅读更多

9 使用有意义的名字

当命名一个类,变量,方法,常量的时候,它们是什么,就用什么名字,这样对于将要阅读你程序的人来说,非常有意义。选择一个有意义的词汇,避免使用单字符或者一般的词汇来定义。

在下面的例子中,变量a和常量65是非常的含糊不清的

if (a < 65) {

    y = 65 - a;

} else {

    y = 0;

}

当使用一个有意义的名字后,变得非常容易理解

if (age < RETIREMNT_AGE) {

    yearsToRetirement = RETIREMNT_AGE - age;

} else {

    yearsToRetirement = 0;

}

但是当这个变量可以充分解释目的的时候,就可以忽略这个原则,比如像一个循环中的常量

for (int i =0; i < numberOfStudents; i++ ) {

    enrollStudent(i);

}

一些变量用得非常多,已经成为标准,具体参照规则28

 

10 使用熟悉的名称

使用一个相对于目标领域熟悉的名称。如果你的客户对于clients的理解是customers,那么用Cstomer来定义这个类,而不是Clinet。使用对你目标领域来说有意义的,熟悉的名称,而不是你熟悉的名称。

 

11 质疑现存的长名字

一个对象的名称应该描述的是它的目的。如果一个类,接口,变量或者方法拥有一个过分长的名称的话,那么这个实体可能试图完成太多,也就是超出它的能力范围。

用一个简单的名字来给于一个实体较少的功能,能力,首先需要确定这个实体的设计和目的是什么。可能需要重构一个实体,也许会产生出新的类,接口,方法或者变量来使方法聚焦在自己所应该做的,和符合这个简单名字的意义。

 

12 用元音字母连接

缩写降低代码的可读性和增加更多的含糊不清。不要尝试去除元音字母去减少名称的长度。

下面的例子,读者可以很清晰的明白

public Message appendSignature(Message message,String signature){

    ...

}

而如果缩短了名字就会增加了理解的难度

public Msg appndSgntr(Msg msg,String sgntr) {

   

}

如果你去除元音字母,只是为了简短长名称的话,那么你需要问问自己,改变后是否和原来的意义相同或者接近呢。

 

13 只大写每个单词的首字母

这个规则是为了用大写来分割单词,减少迷惑。它对于一个单词接着一个单词来说非常有意义。

setDSTOffset()                                setDstOffset()

loadXMLDocument()                      loadXmlDocument()

 

该原则不适用于

常量只能拥有大写字母

static final String XML_DOCUMENT = “text/XML”;

每个方法,变量,参数的名字的首字母必须是大写。

Private Document xmlDocument;

 

14 不要使名字仅仅是语法不同

Java的编译器可以区分出语法的不同,可是人却很难注意到不同之处。

比如,一个变量命名为theSQLInputStream,那么就不要再同样的范围内出现这样的变量theSqlInputStream.如果这样的名称出现在同一范围内的话,那么会给后来阅读代码的带来很多不必要的迷惑和麻烦。

 

包命名

15 使用反转的,小写的你的域名作为包的节点名称。

任何的发布包都需要把域名小写,并且反转来命名。例如,如果一个公司名称为Bpu Soft。Internet域名为www.bpusoft.com。发布的应用程序的包为server,那么Bpu soft就要给包命名为com.bpusoft.server

 

16 使用单一的,小写的单词作为每个包的名称

一个好的,或者说合适的包的名称应该是由单一,小写的,并且清晰表达目的的,并且有用的单词构成。一个包的名字应该有意义的缩写。比如标准java包的名字java.io 和java.net.

 

17 只要当新的版本,与原来的版本兼容的时候,才可以使用相同的包名称,否则的话,新命名一个。

这个目的是为了保证两个相同名称的包的行为要是彼此兼容的。如果你有一个新的版本与原来的不兼容的话,你应该改变你的包的名称。不过有一个安全的简单的方法就是在每一个包的后面加上版本号

com.bpusoft.server.v1;

com.bpusoft.server.v2;

 

类型命名

18类或接口的每个单词的第一个字母大写

每个字母大写是为了分割每个单词,第一个字母大写是为了与变量的不同。

public class PrintStream

              extends FilterOutputStream{

   

}

 

public interface ActionListener

              extends EventListener {

   

}

类命名

19 用名词定义类

类定义的是对象或者事物。所以需要用名词定义:

class CustomerAccount{

    ...

}

 

public abstract class KeyAdapter

              implements KeyListener {

    ...

}

 

20 使类的名字是一组有关联的属性,服务或者常量

类应该是由一组有协作的,相互关联的属性,服务或者常量定义的。

Java.awt.font.LineMetrics 类是一个管理者一组相关联的属性:

/**

* The LineMetrics class allows

* access to the* metrics needed to layout

* characters along a line and to layout

* of a set of lines. 

*/

abstract class LineMetrics {

    public abstract int getNumChars();

    public abstract float getAscent();

    public abstract float getDescent();

    public abstract float getLeading();

    public abstract float getHeight();

}

java.beans.Bean 类定义了一组相关联的服务

/**

 * This class provides some

 * general purpose beans

 * control methods.

 */

public class Beans {

    public static Object instantiate(...){...};

    public static Object getInstanceOf(...){...};

    public static boolean isInstanceOf(...){...};

    public static boolean isDesignTime(){...};

    ……………….

}

 

java.sql.Types是一个定义了一组常量的类

/**

 *

The class that defines the constants

 * that are used to identify generic

 * SQL types.

 */

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;

              public final static int REAL                         =   7;

              public final static int DOUBLE                    =   8;

              public final static int NUMERIC   =   2;

}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics