Как вид следования this question about prefixes, я согласен с большинством людей в теме, что префиксы плохие. Но что, если вы используете геттеры и сеттеры? Затем вам нужно различать общедоступное имя получателя из частной хранимой переменной. Обычно я использую символ подчеркивания, но есть ли лучший способ?Если вы используете геттеры и сеттеры, как следует называть переменные частного члена?
ответ
Это совершенно субъективный вопрос. Нет «лучшего» способа.
Один из способов:
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; }
Ни правильный ответ. У каждого есть преимущества и недостатки стиля. Выберите тот, который вам больше нравится, и примените его последовательно.
В случае чувствительного языка я просто использую:
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
Есть почти так же много различных способов сделать это, так как есть программисты делают это, но некоторые из наиболее популярных способов включают (для имущества Foo
):
- mF оо
- m_foo
- _foo
- Foo
В Java есть this.foo в питоне есть self.foo и другие языки имеют подобные вещи, так что я не вижу необходимости в именовании что-то особенным образом, когда я уже могу использовать конструкцию языка. В этом же контексте хорошие IDE и редакторы понимают переменные-члены и выделяют их особым образом, поэтому вы можете увидеть это без использования специальных имен.
Мне нравится прикрепить поля с подчеркиванием, как упомянули другие.
private int _x;
Я думаю, что это выходит за рамки прямых личных предпочтений, хотя (как сказал Дэвид Арно в этой теме). Я думаю, что есть некоторые реальные объективные причины для этого:
- Это означает, что вы не должны писать «this.x = x» для назначений (особенно в сеттерах и конструкторах).
- Он отличает ваши поля от ваших локальных переменных/аргументов. Важно сделать это: поля сложнее обрабатывать, чем местные, поскольку их масштаб шире/срок службы больше. Добавление дополнительного символа - это немного предупреждающий знак для кодеров.
- В некоторых IDE подчеркивание заставит автозаполнение сортировать поля в верхней части списка предложений. Это упрощает просмотр всех полей для класса в одном блоке. Это, в свою очередь, может быть полезно; на больших классах вы не сможете увидеть поля (обычно определяемые в верхней части класса) на том же экране, что и код, над которым вы работаете. Сортировка их в верхней части дает удобную ссылку.
(Эти соглашения являются для Java, но существуют подобные им для других языков)
Эти вещи, кажется небольшой, но их распространенность, безусловно, делает мою жизнь легче, когда я кодирования.
I как запись "this.x = x". Мне это очень ясно. Кроме того, при использовании Eclipse вы можете автоматически генерировать ваши геттеры/сеттеры таким образом.
, который выглядит хорошо, но в ActionScript (мой основной язык) вы никогда не запускаете функцию или переменную с большой буквы, если только это не имя класса или конструктор (вы можете просто не использовать). – Iain 2008-10-03 23:10:13
В этом случае я, вероятно, перейду с _myValue в качестве переменной и myValue в качестве имени свойства. – 2008-10-03 23:12:11