技术开发 频道

J2ee 开发编程规范



    五、 最小的作用范围和权利

    成员变量和方法通常应该拥有尽可能小的可见度(包括private ,protected,public和缺省的变量和方法)。变量应该尽可能局部地进行声明。

    1. 绝不使用public成员变量
    2. 成员变量首先考虑为private。避免使用protected的成员变量,唯一的例外可能是声明为final protected的成员变量。
成员变量声明为protected final 是可能需要提供给子类使用,但是这样同样也破坏了类的封装性。更好一点的做法是把成员变量声明为private final的。并提供一个protected 的方法供子类调用,在这个方法中返回 private final 的成员变量。 
    3. 一个类只应该有它所实现接口的公有方法和必要的成员变量的getter和setter方法以及这个类提供给外部访问的方法声明为public。其它的统统为protected 或private 
    4. 一个类的方法需要提供给子类有不同的实现而进行重写,或者需要把实现交给子类去完成应该声明为protected。其它的统统声明为private 尽可能的把方法隐藏起来,public ,protected ,默认的方法,private; public方法越少这个类就越简洁。就更便于使用,测试和重构。 
    虽然方法的调用不像对成员变量的直接访问那样危险。但是尽可能的降低方法的可见度在于:降低了类之间的耦合度。把一个类的外在需求与一个类的实现逻辑分开来是十分有必要的。这既可防止这个类的内部状态遭到意外的破坏,同时也简化开发人员处理这个类的任务。通常只提供他们所需要的方法。 
    5. 变量应该尽可能的在使用它的地方声明。
作用范围内的变量越少,可阅读性就越高,也更加便于调试。杜绝使用C语言或delphi的变量声明方式(变量在方法的开始处声明) 

    六、 this关键字的使用 
    this是一个java中经常使用的关键字,但是我们也经常忘记使用this而使得在访问两个变量时造成意外的错误。 
    下面的方法将会被编译通过,而并没有给成员变量name赋值
1private String name; 2public void setName(String name){ 3name = name; 4} 5
    还有另外的一种形式也会被编译通过(在录入方法参数时候可能输错某个字母)
public void setName(String nme){ name = name; }
    在上面的两种情况中,假如没有什么方法对name进行初始化,那么在运行的时候出现莫名其妙的空指针异常。
在第一个方法中把方法参数赋给方法参数自身,在第二方法中把成员变量赋给成员变量自身。除了没有达到预期的效果外都还会造成空指针异常。并且这种错误在编译时都能正常通过。


    建议:采用下面良好的习惯来避免上面出现的错误:
    1. 访问成员变量总是使用this关键字。这样使得我们总是给期望的成员变量进行访问。而解决变量的多议性。
1public void setName(String name){ 2this.name = name; 3}
    2. 给方法参数赋予一个有意义或有区别的名字(不要使用_下划线来命名变量,只有常量才使用下划线.正确的反映参数的用途或代表的意义,并且避免了我们刚才见过的问题
1public void setName (String newName){ 2this.name = newName; 3} 4
    3. 局部变量名变该相对短而成员变量名应该相对冗长。例如,I应该是一个变部变量,
    userInfo应该是一个成员变量。
    通常,成员变量名以一个小写字母开头的接口或类名,而局部变量名应在当前的上下文环境中代表它的含议。
1private SystemUserInfo systemUserInfo; 2public void methodXX(){ 3SystemUserInfo newUser = new SystemUserInfo(); 4} 5
0
相关文章