Java сеттеры и "это" - PullRequest
       51

Java сеттеры и "это"

5 голосов
/ 21 февраля 2010

Я заметил, что многие люди используют Java-сеттеры:

1)

public void setX(int x) {
    this.x = x;
}

Лично мне это не нравится, и я думаю, что это должно быть что-то вроде:

2)

public void setX(int newX) {
    x = newX;
}

Есть ли причины, по которым первый будет лучше?

Разве 1) легче сделать ошибку с. В нескольких случаях я отслеживал ошибки в коде вплоть до людей, которые делают:

x = x; 

по ошибке, может быть потому, что они печатали быстро и просто хотели убрать добытчиков и сеттеров.

Ответы [ 8 ]

14 голосов
/ 21 февраля 2010

Это вопрос стиля. Аргумент в пользу

public void setX(int x) { this.x = x; }

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

Выберите стиль и используйте его последовательно .

7 голосов
/ 21 февраля 2010

Причины отдать предпочтение this.x = x:

  1. Использование this.x = x в конструкторах и является известным шаблоном, который распознают Java-программисты.
  2. x в поле и параметре представляет одно и то же значение.
  3. С x = newX нет синтаксической индикации, что одно является полем, а другое параметром.
4 голосов
/ 21 февраля 2010

Я не думаю, что здесь есть «лучше» или «хуже». Это просто вопрос стиля.

3 голосов
/ 21 февраля 2010

Это полностью субъективно, но первая форма обеспечивает хороший чистый прототип метода в javadoc и т. Д.

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

3 голосов
/ 21 февраля 2010

Это просто соглашение по кодированию. Вы можете выбирать, но используйте это соответственно . Кроме того, средняя IDE может автоматически генерировать все методы получения / установки за несколько нажатий клавиш. Например, в Eclipse: Alt + Shift + R , затем S и затем выберите свойства, которые вы хотите сгенерировать геттерами. / setters for и нажмите ОК. Кроме того, средняя IDE будет отображать предупреждение, когда вы делаете x = x вместо this.x = x.

Я сам предпочитаю this.x = x. Eclipse и многие инструменты реинжиниринга (такие как Dali и Hibernate Tools) также генерируют его по умолчанию.

Соглашение x = newX (венгерская нотация 1020 *) просто унаследовано от (старомодного) мира процедурного программирования и просто не вписывается в идеологию ОО.

2 голосов
/ 21 февраля 2010

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

2 голосов
/ 21 февраля 2010

Я предпочитаю this.x = x;. Там действительно нет правильного пути в этом. В IDE это будет хорошо смотреться с дополнительным цветом на this.

1 голос
/ 21 февраля 2010

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

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