Java类中方法的静态最终常量的位置

时间:2015-11-06 19:06:50

标签: java oop static constants final

假设我有一个类,其方法使用一些静态最终变量作为常量,但类中没有其他方法使用它们。

例如,带有平衡方法的AVLTree类使用这些常量来描述旋转的平衡因子

private static final int L_HEAVY = 2;
private static final int LL_HEAVY = 1;
private static final int R_HEAVY = -2;
private static final int RR_HEAVY = -1;

根据Java编码约定(例如,Oracle的代码约定),最好放置这些常量?

public class AVLTree {
    private Node root;
    // (1) Here, among members, right after class declaration ?

    public AVLTree() {
        root = null;
    }       

    ...

    // (2) Here, just above the method that uses them?

    private Node balance(Node node) {
        // (3) Here, inside the method that uses them?

        if (height(node.left) - height(node.right) == L_HEAVY) {
            if (height(node.left.left) - height(node.left.right) == LL_HEAVY) {
                ...
            }
        }

        if (height(node.left) - height(node.right) == R_HEAVY) {
            if (height(node.right.left) - height(node.right.right) == RR_HEAVY) {
                ...
            }
        }

        return node;    
    }

    ...
}

2 个答案:

答案 0 :(得分:4)

如果你知道现在或将来你的方法都不会使用这些变量,你可以在方法中使它们成为局部变量。

但是,如果将来某些其他方法(在课堂内或外部课程中)可能会使用这些变量,请将变量设为公开并将其置于顶部。

展示位置不会影响编译,但与您定义变量和方法的位置保持一致是一种很好的做法。

答案 1 :(得分:2)

将所有常量置于课堂顶部是一种很好的做法。

例如,Sun的“准则大会”确定了this班级file组织。