Какой префикс вы используете для переменных-членов? - PullRequest
32 голосов
/ 21 сентября 2008

Несомненно, для понимания кода важно назначить переменным-членам префикс, чтобы их можно было легко отличить от «обычных» переменных.

Но какой префикс вы используете?

Я работал над проектами, в которых мы использовали m_ в качестве префикса, в других проектах мы использовали только подчеркивание (что мне лично не нравится, потому что только подчеркивание недостаточно демонстративно).

В другом проекте мы использовали форму длинного префикса, которая также включала тип переменной. Например, mul_ - это префикс переменной m типа u nsigned l ong.

Теперь дайте мне знать, какой префикс вы используете (и, пожалуйста, укажите причину).

РЕДАКТИРОВАТЬ: Большинство из вас, кажется, кодируют без специальных префиксов для переменных-членов! Это зависит от языка? Исходя из моего опыта, C ++ код имеет тенденцию использовать подчеркивание или m_ в качестве префикса для переменных-членов. А как насчет других языков?

Ответы [ 33 ]

1 голос
/ 05 июня 2009

Мне нравится m_, но до тех пор, пока в кодовой базе используется соглашение, я крут с ним.

1 голос
/ 22 сентября 2008

Я использовал m_ perfix в C ++, но в C # я предпочитаю использовать только значение camel для поля и pascal для его свойства.

private int fooBar;
public int FooBar
{
  get { return fooBar; }
  set { fooBar = value; }
}
1 голос
/ 21 сентября 2008

Это зависит от того, на каком языке вы работаете.

В C # вы можете ссылаться на любого члена, используя префикс «this», например, 'this.val', что означает, что префиксы не нужны. VB имеет аналогичную возможность с «Я».

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

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

0 голосов
/ 21 сентября 2008

Ваш пример mul_ направлен на венгерскую нотацию «Приложения» Чарльза Симони.

Я предпочитаю держать вещи простыми, и поэтому мне нравится использовать m_ в качестве префикса.

Благодаря этому намного проще увидеть, куда вам нужно обратиться, чтобы увидеть оригинальную декларацию.

0 голосов
/ 21 сентября 2008

Нет, если в этом нет необходимости, подчеркните в противном случае. Применяется для питона.

0 голосов
/ 22 сентября 2008

Я использую только суффикс _ (префикс _ зарезервирован в c / c ++, как многие отмечали выше). Мне это нравится в основном потому, что я ненавижу имена параметров, такие как «aCircle», и мне не нравится писать this.circle, если в этом нет крайней необходимости. (Я делаю это только для переменных-членов публичного доступа, потому что для них я не использую суффикс подчеркивания).

0 голосов
/ 22 сентября 2008

Symbian использует «i» в качестве префикса для членов и «a» для параметров.

0 голосов
/ 21 сентября 2008

Я использую @.

: D j / k - но если это зависит от языка. Если он имеет методы получения / установки, я обычно помещаю _ перед закрытой переменной-членом, и получатель / установщик будет иметь то же имя без _. В противном случае я обычно не использую.

0 голосов
/ 22 сентября 2008

Без префикса. А для чисто функциональных / основанных на стеке имен переменных нет. Но если мне действительно нужно использовать побочные эффекты, которые я могу использовать, если я хочу что-то вывести, тогда я использую p->, где p - внешний указатель на параметры, переданные в мою функцию.

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

__EXTERN_GLOBAL_hungariannotationvariabletypeVendorName-my_member_prefix-Category-VariableName

Обдумывая пример mul, моя переменная-член, представляющая собой длинную без знака, представляющую код операции для команды умножения, может быть mulmul.

0 голосов
/ 21 сентября 2008

Для своих собственных проектов я использую _ в качестве постфикса (как отметил Мартин Йорк выше, _ в качестве префикса является резервирующим в соответствии со стандартом C / C ++ для реализаций компилятора) и i при работе над проектами Symbian .

...