假設我有一個方法使用一些靜態最終變量作爲常量,但類中沒有其他方法使用它們。Java類中方法的靜態最終常量的位置
例如,與使用這些常量來描述旋轉
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的代碼約定將這些常量的平衡方法的AVLTree類)?
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;
}
...
}
我認爲它會編譯到同樣的事情。這是你的偏好。有了IDE,我不確定它有多重要。但是我會把它放在頂端的風格明智的 – dkatzel
如果他們沒有目的/含義的方法之外,然後把它們放在方法中,編譯器可能會完全消除它們。如果他們可能在方法外有目的,即使只使用該方法,然後將它們放在前面*,放在*實例字段之前。儘管編譯器可能仍然內聯它們,所以一旦編譯它們就沒有使用,它們仍然是類定義的一部分,並且可以通過反射來看,所以它們確實有(非常小的)影響。 – Andreas