0

在方法(函数、块等)的(可能是嵌套的)范围内考虑这一点:

int _ = 42;

是否有任何技术原因可以避免使用名为 的局部变量_

出于此问题的目的,一些指导:

  • _通常知道为 Objective-C 实例变量添加前缀。把它放在一边。欢迎评论与公约的其他冲突。
  • 我也喜欢漂亮的代码,但这里强烈建议不要发表品味或纯粹观点的陈述(例如“它{令人困惑,不可读,不可维护}”)†。
  • 我主要想为 Objective-C 回答这个问题,但也鼓励与 C 或 C++ 相关的答案。

† 给我买一品脱,你可以告诉我一切。:)

4

2 回答 2

4

C99 §7.1.3 说,所有以至少一个下划线开头的标识符都保留供实现使用,仅作为文件范围标识符1 _是一个至少以下划线开头的标识符,因此您不应该在文件范围内以任何方式定义它。2

但是,作为局部变量名称,_对于应用程序程序员来说是公平的游戏。只有以两个下划线或一个下划线加一个大写字母开头的标识符才会被无条件保留。

正如脚注所示,违反这些规则比遵守规则更受尊重。

1是的,这意味着以“仅供内部使用”的函数名称_开头后跟小写字母的非常常见的做法在技术上是违反一致性的。

2 GNU gettext是一个著名的第三方库,它打破了这个规则;鼓励程序员使用#define _(x) gettext(x)速记。

于 2014-05-23T14:54:49.900 回答
0

简单地回答您的问题 - 不,没有任何技术原因可以避免它。不过还有很多其他原因。

于 2014-05-23T11:59:20.123 回答