Я видел переменные типа _ image и задавался вопросом, что означал?
Почему мы используем _ в именах переменных?
Ответ 1
Это ничего не значит. Это скорее обычное соглашение об именах для частных переменных-членов, которое позволяет им отделить их от методов и общедоступных свойств. Например:
class Foo
{
private int _counter;
public int GetCounter()
{
return _counter;
}
public int SetCounter(int counter)
{
_counter = counter;
}
}
Ответ 2
В большинстве языков _
- единственный символ, разрешенный в именах переменных, кроме букв и цифр. Вот несколько распространенных случаев:
- Разделительные слова:
some_variable
- Частные переменные начинаются с символа подчеркивания:
_private
- Добавление в конец, чтобы отличить от встроенного имени:
filter_
(так какfilter
является встроенной функцией) - Само по себе как неиспользуемая переменная во время цикла:
[0 for _ in range(n)]
Обратите внимание, что некоторым людям действительно не нравится этот последний случай использования.
Ответ 3
Некоторые используют его, чтобы указать, что они являются переменными, а не (скажем) именами методов. Или сделать очевидным, что это переменные экземпляра, а не локальные переменные. Иногда вы видите дополнительные префиксы, например
private int m_age; // Member (instance) variable
private static int g_maxAge; // Global (static) variable
Это просто конвенция. Я собирался сказать "нет ничего волшебного", но это не совсем так - на некоторых языках двойное подчеркивание зарезервировано для "специальных" целей. (Точное использование зависит от языка, конечно.)
EDIT: пример правила двойного подчеркивания, применимого к С#. Из спецификации С# 4, раздел 2.4.2:
Идентификаторы, содержащие два последовательных символа подчеркивания (U + 005F), зарезервированы для использования реализацией. Например, реализация может предоставлять расширенные ключевые слова, начинающиеся с двух символов подчеркивания.
Ответ 4
Подчеркивание имен переменных полностью необязательно. Многие программисты используют его для дифференциации частных переменных - поэтому переменные экземпляра обычно имеют знак подчеркивания, добавленный к имени. Это предотвращает путаницу с локальными переменными.
Ответ 5
Обычно он отделяет поля классов от переменных. Чтобы избежать использования this
в конструкциях кода.
class MyClass {
private int _myIntField;
private void setMyIntField(int value2Set) {
_myIntField = value2Set;
}
}
Ответ 6
_
обычно означает что-то личное или внутреннее. В стандартных библиотеках С++ все специфические переменные реализации должны начинаться с _
.
Ответ 7
В большинстве языков это фактически не влияет на функциональность кода, но часто используется для обозначения зарезервированных или внутренних имен.
В некоторых языках принято называть вашу переменную экземпляра _image
или image_
, а затем использовать общедоступный метод для доступа к ней image()
.
Аналогично, некоторые имена, такие как __FILE__
, используются на некоторых языках для обозначения специальной переменной или константы, созданной интерпретатором или компилятором; такие имена часто резервируются, чтобы побуждать программистов избегать использования этих имен в своих собственных программах в случае, если имена используются в будущих версиях языка.
Ответ 8
Ну символ подчеркивания (_) начинается с вашего имени переменной, но он легален, и некоторые люди используют его для идентификации как частной переменной, а некоторые для обозначения его в кеширующей переменной. Пройдите также с этой ссылкой.
Ответ 9
Другой вариант использования (в основном в javascript) - это когда вам нужно назначить текущий экземпляр этой локальной переменной, которую мы пишем ниже
var _this = this;
Если вам нужно создать локальную временную ссылку на объект, чтобы различать фактическую необходимую ссылку, мы создаем ниже
List<Employee> _employeeList = new ArrayList<>();
for (Employee _employee : employeeList) {}
Итак, если мы будем следовать этой лучшей практике, каждый раз, когда вы видите переменную с _, мы приходим к выводу, что ее использование для решения какой-либо деловой потребности в этом конкретном методе.
Ответ 10
Чтобы избежать использования зарезервированных ключевых слов или зарезервированных ключевых слов, их легче избежать. Единственное подчеркивание не рекомендуется и зарезервировано в JavaSE9.