避免_作为局部变量名的技术原因
Objective-C: technical reasons to avoid _ as a local variable name?
在方法(函数、块等)的(可能嵌套的)作用域中考虑:
int _ = 42;
是否有任何技术原因避免名为_
的局部变量?
一些指导,对于这个问题的目的:
- 我知道
- 我也喜欢漂亮的代码,但是品味或纯粹观点的陈述(例如:"这是{令人困惑的,不可读的,不可维护的}")强烈建议在这里†。
- 我主要感兴趣的是为Objective-C回答这个问题,但答案
_
通常前缀Objective-C实例变量。先把这个放在一边。欢迎评论其他与公约的冲突。C99§7.1.3规定,所有以至少一个下划线开头的标识符都保留供实现使用,仅作为文件范围标识符。1 _
是一个至少以一个下划线开头的标识符,所以你不应该在文件范围内以任何方式定义它。2
然而,作为本地变量名,_
对应用程序程序员来说是公平的。只有以两个下划线开头的标识符,或者下划线和大写字母开头的标识符才被无条件保留。
如脚注所示,违反这些规则比遵守这些规则更受尊重。
1是的,这意味着非常常见的以_
后跟小写字母开始"仅内部使用"函数名的做法在技术上是违反一致性的。
2 GNU gettext是一个杰出的第三方库,它打破了这一规则;建议程序员使用#define _(x) gettext(x)
作为简写
简单地回答你的问题——不,没有任何技术理由来避免它。还有很多其他的原因
相关文章:
- 你能重载对象变量名本身返回的内容吗
- 在C/C++中将变量名定义为__00000001有什么好处吗
- C++变量名(可以将 main 声明为变量,但对于其他函数名称则不然)
- C++ - 声明中变量名后面的括号
- 如何使替换 c 函数的变量名成为错误?
- 是否可以创建没有变量名的变量
- fstream库,试图创建一个变量名为(c++)的文件
- 一个数组C++中的消息和变量名
- 在变量名后声明带有 () 的非内部类型与不使用变量名的行为不同。即 std::map<int,char>x(); - 这是怎么回事?
- 数组的变量名和该数组的地址有什么区别?
- 如何将变量名设置为字符串?C++
- 类中具有相同变量名的多重继承
- 如何在从.txt文件中读取时不重复相同的变量名
- 在循环中使用相同的变量名可以吗
- C++保留符号作为C变量名
- 在C++中,在给定的相同作用域内声明相同的变量名
- 为什么类名与"::"一起使用在变量名之前?
- 在同级之间继承相同的变量名
- __COUNTER__变量名中
- 避免_作为局部变量名的技术原因