В Java, почему люди добавляют поля в `this`? - PullRequest
24 голосов
/ 02 января 2009

Когда ссылаются на переменные класса, почему люди добавляют его к this? Я не говорю о случае, когда this используется для устранения неоднозначности параметров метода, а скорее, когда он кажется ненужным.

Пример:

public class Person {        
    private String name;

    public String toString() {
        return this.name;
    }
}

В toString, почему бы просто не указать name как name?

return name;

Что покупает this.name?

Вот вопрос о переполнении стека, код которого имеет this в ожидании.

Ответы [ 16 ]

2 голосов
/ 02 января 2009

Помимо устранения неоднозначности с параметрами метода, он ничего не покупает. Может быть, ясность / читабельность, но это действительно зависит от вашего стиля.

1 голос
/ 02 января 2009

Они, возможно, программисты на Python и их замучили / потеряли / запутали без явного this.

0 голосов
/ 02 января 2009

Код проще для чтения. Другая хорошая практика, на мой взгляд, также вызывает getXXX() в toString() (вместо this.XXX), поскольку getXXX() может иметь важную логику.

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

0 голосов
/ 02 января 2009

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

0 голосов
/ 02 января 2009

«this» предотвращает путаницу с переменными экземпляра с тем же именем в родительском классе / ах.

Это в значительной степени дополнение к добавлению слова "super".

0 голосов
/ 02 января 2009

Что еще нужно помнить, это сам язык. Вы не упомянули Java специально (хотя я предполагаю, что вы на самом деле ничего не имели в виду, так что этот комментарий больше относится к вашему сведению), но, как уже упоминалось ранее, это отличный способ сделать код самостоятельно документирование для предотвращения путаницы в будущем, когда кто-то еще начинает изменять вашу кодовую базу.

Однако, если вы берете PHP, использование $this обычно требуется при обращении к переменным класса. При разных правилах в разных языках зачастую проще придерживаться общего для них паттерна, паттерна, который, как оказалось, очень твердый стиль кодирования. Мне проще просто добавить this ко всему, чем пытаться вспомнить, какой язык требует этого, а какой просто «предпочитает».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...