Использование «this» в Java против коротких имен параметров - PullRequest
7 голосов
/ 07 мая 2011

Что вы предпочитаете и почему?

public void setPresenter(Presenter presenter) {
    this.presenter = presenter;
}

public void setPresenter(Presenter p) {
    presenter = p;
}

Ответы [ 4 ]

10 голосов
/ 07 мая 2011

Я предпочитаю примечание this, по крайней мере, в конструкторах и методах составных сеттеров, где у вас есть несколько аргументов.

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

В частном случаеУ меня нет мнения, так как имя метода достаточно пояснительное, а реализация - одно назначение.

3 голосов
/ 07 мая 2011

Я предпочитаю this - этот класс иллюстрирует, почему

class foo {

    int value;
    int otherValue;

    void setValue(int i) {
        value = i;
    }

    void setOtherValue(int i) {
        otherValue = i;
    }

    // uhh what? 
    void setBoth(int i, int j) {
        // which one should be first? oh, you guessed and got it wrong? tooooo bad!

    }


}
2 голосов
/ 07 мая 2011

Мы используем полные слова для переменных экземпляра и TLA для методов, поэтому наши будут иметь:

public void setPresenter(Presenter prs) {
    presenter=prs;
    }

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

1 голос
/ 07 мая 2011

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

Однако вы должны использовать разумное имя для параметров.Вот почему я предпочитаю использовать префиксы для параметров и локальных переменных:

public void setPresenter(Presenter pPresenter) {
    presenter = pPresenter;   //pXxxx stands for 'parameter'
    Presenter tPresenter = pPresenter;  //tXxxx stands for 'temporary' or local
}
...