Преимущество использования этого. - PullRequest
1 голос
/ 07 февраля 2012

Я прочитал много крупных проектов в ООП и заметил, что многие из них используют this.[variable], [ClassName].[staticVariable].Например:

public class ABC {

    private float mX;
    public static float y;    

    public float getX() {
        return this.mX;
    }

    public float doSomethingWithY() {
        return ABC.y;
    }

}

И даже с автоматически сгенерированной функцией Eclipse Getters & Setters она также поставляется с this.[variable], хотя в этом нет необходимости, поскольку там не объявлена ​​локальная переменная.

Есть ли какое-либо преимущество при использовании этих обозначений, или это просто стиль кода?

РЕДАКТИРОВАТЬ, чтобы некоторые люди не поняли неправильно.Я знаю, что означают this и [ClassName].[staticVariable].Но в этом случае это не нужно.Вопрос: даже если это не нужно, почему кодировщики гуру все еще добавляют его?Когда им нужно обновить / исправить огромный проект, будут ли какие-либо преимущества и недостатки?

Ответы [ 6 ]

3 голосов
/ 07 февраля 2012

По сути, вы точно знаете, что работаете с атрибутом класса, а не с переменной, созданной внутри метода или полученной в качестве параметра.

А также, это помогает, если у вас есть локальная переменная с тем же именем.

И последняя причина: читабельность.

2 голосов
/ 07 февраля 2012

Это необходимо в некоторых случаях, например, this. требуется, когда вам нужно использовать переменную-член, а не локальный параметр метода с тем же именем.

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

Помимо необходимых случаев, это действительно вопрос стиля кодирования. Я рекомендую использовать его всякий раз, когда это помогает устранить потенциальную неопределенность .

1 голос
/ 07 февраля 2012

В сложных методах иногда приятно проводить различие между переменными экземпляра в этом классе и локальными переменными в конкретной функции.Это различие сразу становится очевидным, когда вы используете «это».

0 голосов
/ 07 февраля 2012

Его синтаксис, если вы хотите получить доступ к переменной экземпляра класса, используйте (ссылка на объект). (Имя переменной экземпляра). Как

A a= new A();// for non static class,this for the current object
a.(instance variable name)
// for non static class do the same but use (class name).variable name
0 голосов
/ 07 февраля 2012
this.? '?' is a member variable, this is a reference to the current object.

см. это

0 голосов
/ 07 февраля 2012

Для небольших фрагментов кода это не имеет значения, но иногда это может произойти:

public float getX() {
    ....
    int mX = someFunc()
    ...
    return mX;
}

В этом случае вместо переменной-члена возвращается локальное значение.

Вы обычно хотите быть явным и сказать this.mX.Тем не менее, вы не должны иметь огромные функции в любом случае.

...