Должен ли я использовать имя класса при ссылке на поле stati c в этом классе? - PullRequest
1 голос
/ 03 августа 2020

Если у меня есть класс с полем stati c, например:

public class Foo {
    public static int bar;
}

... И я хочу сослаться на это поле в его объявленном классе. Я знаю, что работают оба:

public class Foo {
    public static int bar;

    public static int getBar() {
        return bar;
    }
}

и:

public class Foo {
    public static int bar;

    public static int getBar() {
        return Foo.bar;
    }
}

. Есть ли какие-либо предпочтения или соглашения между тем, следует ли включать такое имя класса? Любая помощь приветствуется.

Ответы [ 2 ]

2 голосов
/ 03 августа 2020

На самом деле, это полностью основано на мнении. Вы должны использовать тот метод, который вам больше нравится. Оба одинаково предоставлены. Но я хотел бы добавить один момент, если вы используете геттер / сеттер, тогда объявите переменную stati c private:

public class Foo {
    private static int bar;

    public static int getBar() {
        return bar;
    }
    public static int setBar(int _bar) {
        bar = _bar;
    }
}

И поскольку оба метода getter и setter являются stati c, это гарантирует, что они оба определенно работают только с переменными stati c класса Foo. Это также решает проблему читабельности.

1 голос
/ 03 августа 2020

Я согласен со всем, что упоминается в комментариях. Кроме того, я помню о удобочитаемости кода, а затем принимаю решение. Следующий фрагмент кода дает представление о том же:

public class Engine {
    private static boolean isOn = false;

    public static void doWork1() {
        if (isOn) { // check if engine is on
            // do some work
        }
    }

    public static void doWork2() {
        if (Engine.isOn) {
            // do some work
        }
    }
    ...
}

Вы можете видеть, что doWork2() метод с использованием имени класса повысил читаемость кода даже без добавления каких-либо комментариев к коду.

...