c - Objective C/C 中的命名约定,以 "_"开头?

标签 c objective-c programming-languages naming-conventions

我看到有人这样定义变量:

b2World *_world;
b2Body *_body;
CCSprite *_ball;

代替

b2World *world;
b2Body *body;
CCSprite *ball;

我熟悉第二个,但不熟悉第一个。所以,我查了维基百科关于命名约定的内容:

Names beginning with double underscore or an underscore and a capital letter are reserved for implementation (compiler, standard library) and should not be used (e.g. __reserved or _Reserved).

那么,以“_”开头的有什么特殊含义吗?

我看到的以“_”开头的代码在这里:

http://www.raywenderlich.com/457/intro-to-box2d-with-cocos2d-tutorial-bouncing-balls

The wiki page.

最佳答案

在一些 Objective-C 开发人员中有一个长期存在的约定,即在实例变量前加上下划线。它可以在几个方面提供帮助:第一,它可以更容易地在 .m 文件中发现实例变量;第二,它使开发人员不必为方法参数想出创造性的名称以避免与实例变量名称冲突;第三,正如其他人所指出的,它表示实例变量是私有(private)的,因此不应在整个代码中随意访问。

事实上,我主张避免在访问器(getter 和 setter)、-dealloc-init... 以外的方法中直接访问实例变量.并不是说你永远不应该在其他任何地方使用它们,但你至少应该在其他方法中直接使用实例变量之前考虑一下。

关于c - Objective C/C 中的命名约定,以 "_"开头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2660618/

相关文章:

c - C中的按位运算在char中接收二进制

c++ - 指针算术(不是一个问题,而是一种测验)

programming-languages - 保留关键字按编程语言计数?

iphone - 如何使用NSJSONSerialization输出数据?

ios - 如何用字符串放置货币符号前缀或后缀?

ios - UITableView 滚动时改变 UIView 的高度

java - 警告 : A generic array of Object&Serializable&Comparable<? > 是为可变参数创建的

c - 定义一个宏来交换符号

c - malloc 接受所有数据类型的通用函数

c++ - 如何将两个 SSE 寄存器加在一起