Почему мы используем _ в именах переменных? - PullRequest
31 голосов
/ 01 августа 2011

Я видел такие переменные, как _ изображение, и мне было интересно, что означает _?

Ответы [ 10 ]

57 голосов
/ 01 августа 2011

Это не ничего не значит . Это довольно распространенное соглашение о присвоении имен частным переменным-членам, чтобы отделить их от методов и открытых свойств. Например:

class Foo
{
   private int _counter;

   public int GetCounter()
   {
      return _counter;
   }

   public int SetCounter(int counter)
   {
      _counter = counter;
   }
}
18 голосов
/ 01 августа 2011

В большинстве языков _ - единственный допустимый символ в именах переменных, кроме букв и цифр. Вот несколько распространенных случаев использования:

  • Разделительные слова: some_variable
  • Закрытые переменные начинаются с подчеркивания: _private
  • Добавление в конце, чтобы отличить от встроенного имени: filter_ (так как filter является встроенной функцией)
  • Сам по себе как неиспользуемая переменная во время цикла: [0 for _ in range(n)]

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

11 голосов
/ 01 августа 2011

Некоторые люди используют его, чтобы указать, что они являются переменными, а не (скажем) именами методов.Или чтобы было очевидно, что это переменные экземпляра, а не локальные переменные.Иногда вы видите дополнительные префиксы, например

private int m_age; // Member (instance) variable
private static int g_maxAge; // Global (static) variable

Это просто соглашение.Я собирался сказать "в этом нет ничего волшебного", но это не совсем так - в некоторых языках подчеркивание double зарезервировано для "специального" использования.(Точное использование зависит от языка, конечно.)

РЕДАКТИРОВАТЬ: Пример правила двойного подчеркивания в применении к C #.Из спецификации C # 4, раздел 2.4.2:

Идентификаторы, содержащие два последовательных символа подчеркивания (U + 005F), зарезервированы для использования реализацией.Например, реализация может предоставлять расширенные ключевые слова, которые начинаются с двух подчеркиваний.

1 голос
/ 01 августа 2011

_ обычно означает что-то личное или внутреннее. В стандартных библиотеках C ++ все переменные, специфичные для реализации, должны начинаться с _.

1 голос
/ 01 августа 2011

Хорошо, символ подчеркивания (_) начинается с того, что имя вашей переменной не рекомендуется, но это допустимо, и некоторые люди используют его для идентификации в качестве закрытой переменной, а некоторые - для присвоения ей имени в переменной кэширования.Пройдите по этой ссылке тоже.

1 голос
/ 01 августа 2011

Обычно это отделяет поля класса от переменных.Чтобы не использовать this в конструкциях кода.

class MyClass {

 private int _myIntField;


    private void setMyIntField(int value2Set) {
     _myIntField = value2Set;
    }

}
1 голос
/ 01 августа 2011

Подчеркивание в именах переменных не является обязательным.Многие программисты используют его для разграничения приватных переменных, поэтому переменные экземпляра обычно имеют подчеркивание перед именем.Это предотвращает путаницу с локальными переменными.

0 голосов
/ 14 января 2018

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

0 голосов
/ 30 июня 2017

Другой вариант использования (в основном в javascript) - это когда вам нужно присвоить текущему экземпляру this локальную переменную, которую мы напишем, как показано ниже

var _this = this;

Если вам нужно создать локальную временную ссылку на объект, чтобы провести различие между фактической необходимой ссылкой, мы создадим, как показано ниже

List<Employee> employeeList = new ArrayList<>();
for (Employee _employee : employeeList) {}

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

0 голосов
/ 01 августа 2011

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

В некоторых языках обычно называют вашу переменную экземпляра _imageили image_ и затем сделайте открытый метод, используемый для доступа к нему image().

Аналогично, некоторые имена, такие как __FILE__, используются в некоторых языках для обозначения специальной переменной или константы, созданной интерпретатором или компилятором;такие имена часто зарезервированы , чтобы поощрять программистов избегать использования этих имен в своих собственных программах в случае, если имена будут использоваться в будущих версиях языка.

...