技术开发 频道

J2ee 开发编程规范



    七、 不要使用字面常量

    除了一些大家都明白的如0值,空值null,和空串””外,不要在java代码中使用字面常量 
1 if (ware.getWareDetailList() != null 2 && ware.getWareDetailList().size() > 100) { 3 request.setAttribute(super.SERVICE_BUSINESS_INFO, 4 "物品数量超过了上限,请您将物品数量控制在100件以内");
    看上面的例子。无耐的是,我们经常在j2ee项目中大量出现这样的代码。
    1. 这样的代码没有明确的意义。必须被迫阅读代码来猜测100的含义。
    2. 代码容易出错,我们必须被迫比较不同的字面值来确信它们是相同的,而且我们很容易错误的输入。
    3. 修改100这个常数时,可能需要修改多处。

    比较好的做法是使用一个常数,在JAVA中意味作使用static final的变量.
1private static final int WARE_COUNT_LIMIT = 100; 2if (ware.getWareDetailList() != null 3&& ware.getWareDetailList().size() > WARE_COUNT_LIMIT ) { 4request.setAttribute(super.SERVICE_BUSINESS_INFO,
"物品数量超过了上限,请您将物品数量控制在100件以内"); 5
    一般情况下,这已经OK了。但是在有些情况下它仍然不够好,假如对于每次发送的物品数量限制并不是总是相同的,今天的常量,在明天可能就是一个经常变化的变量。
    可能下面的版本会更灵活一些:

1private static final int DEFAULT_WARE_COUNT_LIMIT = 100; 2protected int wareCountLimit(){ 3return DEFAULT_WARE_COUNT_LIMIT; 4} 5if (ware.getWareDetailList() != null 6&& ware.getWareDetailList().size() > wareCountLimit()) { 7request.setAttribute(super.SERVICE_BUSINESS_INFO,
"物品数量超过了上限,请您将物品数量控制在100件以内"); 8
    这样我们可以把对物品数量的控制延迟到子类进行,子类可以通过重写wareCountLimit()方法来灵活控制。

    如何设计一个常量,可以有下面的标准来进行参照:

    1. 如果字面常量应该是代码中的一部分,不应该使用常量变量或方法。
    比如:SQL语句。SQL语句本身就应该是代码的一部分,所以不应该再它们声明一个常量。
    2. 永远都不会变化的常量或者变化的可能性相当少的常量,声明为static final的常量。
    例如:在所有应用服务器都相同的JNDI名。
    3.在编译时可能会发生改变的常量,声明子类可以重写的protected的方法。
    例如:在应用服务器中可能需要变化的JNDI名,如TransactionManager的名称
    4.在运行时可能会发生改变的常量,声明一个protected方法.
    例如:物品数量限制
    5. 受国际化影响的常量,声明一个proteced的方法。
    例如:根据不同的Local信息,需要显示不同的错误信息或语言
    这个protected方法返回一个从ResourceBundle中查找的值。

    八、 内部类和接口

    在JAVA中使用内部类和接口可以避免命名空间污染,内部类通常用来帮助外部类有一个一致的责任。除非进行Swing编程,尽可能的少用匿名内部类。而使用一个有类名的内部类会带来更多的好处。比如可以使用构造函数。
使用内部类不能够实现代码重用。会导致重复代码的产生。在使用的时候要进行权衡。
0
相关文章