Если вы используете геттеры и сеттеры, как вы должны называть закрытые членские переменные? - PullRequest
4 голосов
/ 04 октября 2008

В качестве ответа на вопрос о префиксах , я согласен с большинством людей в теме, что префиксы плохие. Но что делать, если вы используете геттеры и сеттеры? Затем вам нужно отличить общедоступное имя получателя от закрытой переменной. Я обычно просто использую подчеркивание, но есть ли лучший способ?

Ответы [ 6 ]

6 голосов
/ 04 октября 2008

Мне нравится префикс полей с подчеркиванием, как уже упоминали другие.

private int _x;

Я думаю, что это выходит за рамки прямых личных предпочтений, хотя (как сказал Дэвид Арно в этой теме). Я думаю, что для этого есть несколько объективных причин:

  1. Это означает, что вам не нужно писать «this.x = x» для присваиваний (особенно в установщиках и конструкторах).
  2. Он отличает ваши поля от ваших локальных переменных / аргументов. Это важно сделать: с полями сложнее работать, чем с местными, так как их область действия шире / время жизни больше. Добавление дополнительного символа - это немного ментальный предупредительный знак для кодировщиков.
  3. В некоторых IDE подчеркивание заставит автозаполнение сортировать поля в верхней части списка предложений. Это облегчает просмотр всех полей для класса в одном блоке. Это в свою очередь может быть полезным; в больших классах вы не сможете увидеть поля (обычно определяемые в верхней части класса) на том же экране, что и код, над которым вы работаете. Сортировка их по началу дает удобную ссылку.

(эти соглашения для Java, но аналогичные существуют для других языков)

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

6 голосов
/ 04 октября 2008

Это совершенно субъективный вопрос. Нет лучшего пути.

Один из способов:

private int _x;
public get x():int { return _x; }
public set x(int val):void { _x = val; }

Еще есть:

private int x;
public get X():int { return x; }
public set X(int val):void { x = val; }

Ни один правильный ответ. У каждого есть свои достоинства и недостатки. Выберите тот, который вам больше нравится, и применяйте его последовательно.

3 голосов
/ 04 октября 2008

В java есть this.foo, в python есть self.foo, и в других языках есть похожие вещи, поэтому я не вижу необходимости называть что-то особым образом, когда я уже могу использовать языковую конструкцию. В этом же контексте хорошие IDE и редакторы понимают переменные-члены и выделяют их особенным образом, так что вы действительно можете увидеть их без специальных имен.

1 голос
/ 04 октября 2008

I как , пишущий "this.x = x". Это очень ясно для меня. Кроме того, при использовании Eclipse вы можете автоматически генерировать ваши методы получения / установки.

1 голос
/ 04 октября 2008

Существует почти так же много разных способов сделать это, как это делают программисты, но некоторые из наиболее популярных способов включают (для свойства Foo):

  • mFoo
  • m_foo
  • _foo
  • Foo
1 голос
/ 04 октября 2008

В регистрозависимом языке я просто использую:

private int myValue;

public int MyValue
{
    get { return myValue; }
}

В противном случае я бы использовал подчеркивание

Private _myValue As Integer

Public ReadOnly Property MyValue As Integer
    Get
        Return _myValue
    End Get
End Property
...