gpt4 book ai didi

objective-c - Cocoa 中的实例变量命名约定

转载 作者:太空狗 更新时间:2023-10-30 03:25:33 25 4
gpt4 key购买 nike

这个问题是关于 objective c 和 cocoa 中的变量命名风格的。我只是想强调,我不是在寻找“正确”的答案,而是在寻找好的想法。

我通读了 Apple 和 Google 的 objective c 风格指南,但我对它们都不是很满意。 Apple 的指南没有关于实例变量与局部变量的任何实际风格建议。事实上,Cocoa 库本身似乎很高兴拥有与实例变量同名的函数参数。这让我个人感到畏缩。

Google 指南指定实例变量应使用尾部下划线表示。好吧,一切都很好,但它建议我们然后用 @synthesize property = property_ 合成每个公共(public)属性。我不了解其他人,但如果我要对我项目中的每个实例变量都这样做,我会被诅咒的。我认为这是一种浪费且令人困惑的解决方案。

我很想为对象属性使用 myX(例如“myInstanceVariable”)命名风格,但我很少在 objective-c 中看到这种风格。

是的,你用什么?我不知道有没有你觉得有用的样式约定?您是否认为与实例变量同名的函数参数很危险,尤其是在多个开发人员环境中?谢谢伙计们!

注意 - 正如许多人所指出的,我的术语在 OP 中不适用。如果原始措辞影响了清晰度,我深表歉意,但我认为这一点仍然很明确。

最佳答案

我倾向于使用无前缀的实例变量名称(请注意,“成员变量”是一种 C++ 主义,因为它暗示结构和类主要是可互换的,而在Objective-C),并且在出现歧义的情况下,我使用 Smalltalk 命名参数的约定,使用“a”或“an”,例如:

- (void)setFoo:(SOFoo *)aFoo;
{
foo = aFoo;
}

(当然,在现代 ObjC 中,您会为此使用一个属性。)

使用 theFoo 代替 aFoo 也很常见;查看 this question 的答案.

如果您真的担心冲突,Google 公约是有道理的。如果您使用 Xcode text macro或类似 Completion Dictionary 的工具或 Accessorizer生成您的指令,采用起来非常简单。

请注意 Cocoa key-value coding guidelines几乎可以假设 (a) 您没有为实例变量名称添加前缀/后缀,或者 (b) 您为它们实现(或合成)非前缀/后缀访问器。正如其他人提到的,不要使用 _ 前缀;它保留供 Apple 在其框架中使用。

关于objective-c - Cocoa 中的实例变量命名约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1691799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com