cocoa - Cocoa 中命名类别方法的最佳实践

标签 cocoa naming-conventions objective-c-category

我无意中遇到了两个经典的编程问题之一。我正在编写一个 Cocoa 框架,它基本上是最常用的基础类类别中(大部分)有用方法的集合。我的问题是如何在我的类别中为所述类命名这些额外的方法?我应该使用前缀还是无前缀命名约定(例如 - (void)doSomething- (void)myDoSomething)?

在阅读 Cocoa 文档时我变得不确定:

Use prefixes when naming classes, protocols, functions, constants, and typedef structures. Do not use prefixes when naming methods; methods exist in a name space created by the class that defines them. Also, don’t use prefixes for naming the fields of a structure

并查看 Mike 在周五问答系列中的代码示例(例如,MARefCounting 中的方法名称在 building reference count 文章中具有前缀)。

最佳答案

我认为您引用的文档没有考虑您不拥有的类的类别。它只是想说,如果你定义了 MyClass您也不需要将您的方法命名为 my_doThis ,因为它们没有任何东西可以碰撞。

在这种情况下,使用前缀可能是最安全的。如果您省略了前缀,并且 Apple 最终在未来版本中添加了相同的方法,那么您的类别实现将覆盖 Apple 的,这可能会导致意外行为。

更糟糕的是,有时您可能会替换内部定义的方法(它们并不总是以 _ 开头),这可能会导致框架内的内部不一致,从而使问题更加难以调试。

关于cocoa - Cocoa 中命名类别方法的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7558736/

相关文章:

objective-c - Interface Builder : Enabled1, 2 具有 OR 运算符的属性

java - 分组测试的单元测试名称约定

ios - ios项目结构是否有任何最佳实践或约定

Java 约定 : when referring to coordinates, 我是否用 "location"或 "position"命名方法和变量?

objective-c - doxygen 链接到类别中的 Objective-C 方法

python - Objective-C 数组中的连续数字,如 Python 中的 range()

iphone - 检查对象是否为 NSInteger

cocoa - NSTextField 的 LineFragmentPadding

ios - 对于关联对象键, "static char const * const"比 "static const char"有什么优势?

objective-c - "Cannot find interface declaration for <class>"