为什么我们在变量名中使用_?

问题描述 投票:0回答:13

我看到了像 _ image 这样的变量,想知道 _ 是什么意思?

programming-languages naming-conventions
13个回答
84
投票

这并不意味着任何事情。这是私有成员变量的常见命名约定,以使它们与方法和公共属性分开。例如:

class Foo
{
   private int _counter;

   public int GetCounter()
   {
      return _counter;
   }

   public int SetCounter(int counter)
   {
      _counter = counter;
   }
}

34
投票

在大多数语言中,

_
是除字母和数字之外变量名称中唯一允许使用的字符。以下是一些常见用例:

  • 分隔词:
    some_variable
  • 私有变量以下划线开头:
    _private
  • 在末尾添加以区别内置名称:
    filter_
    (因为
    filter
    是内置函数)
  • 本身作为循环期间未使用的变量:
    [0 for _ in range(n)]

请注意,有些人真的不喜欢最后一个用例。


11
投票

有些人用它来表示它们是变量而不是(比如说)方法名称。或者明确它们是实例变量而不是局部变量。有时您会看到额外的前缀,例如 private int m_age; // Member (instance) variable private static int g_maxAge; // Global (static) variable

这只是一个约定。我本来
打算

说“_没有什么神奇的”,但这并不完全正确——在某些语言中,下划线是为“特殊”用途保留的。 (当然,确切的用法取决于语言。) 编辑:适用于 C# 的双下划线规则示例。来自 C# 4 规范,第 2.4.2 节:

包含两个连续下划线字符 (U+005F) 的标识符保留供实现使用。例如,实现可能提供以两个下划线开头的扩展关键字。


3
投票


2
投票
_

通常表示私人或内部的事物。在 C++ 标准库中,所有实现特定的变量都必须以

_
开头。
    


1
投票
this


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



1
投票
链接

进行操作。


1
投票

下划线(`_')经常用在库函数的名称中(例如“_main”和“_exit”)。为了避免冲突,标识符不要以下划线开头。


0
投票

在某些语言中,将实例变量命名为

_image

image_
,然后使用公共方法来访问它是很常见的
image()

类似地,某些语言中使用诸如

__FILE__

之类的名称来表示由解释器或编译器创建的特殊变量或常量;这些名称通常是

保留的
,以鼓励程序员避免在自己的程序中使用这些名称,以防这些名称在该语言的未来版本中使用。


0
投票


0
投票

var _this = this;

如果需要创建本地临时对象引用,为了区分实际需要的引用,我们创建如下

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

因此,如果我们遵循这种最佳实践,每次您看到带有 _ 的变量时,我们都会得出结论:它用于解决该特定方法的某些业务需求。


0
投票


0
投票

然后有时你需要使用它而不是“private”关键字 答案是扩展

如果你有扩展名(在某些语言中),你不能使用这个变量,所以你必须将其公开,在这种情况下,你必须告诉其他程序员这个变量是私有的,请不要使用它

这是或者不使用的方式 像 func : {_ in print("good"}

© www.soinside.com 2019 - 2024. All rights reserved.