我最喜欢 Cocoa 的一个原因是可读性因素。
最让我烦恼的事情之一是便利构造函数强制重复的约定。
举个例子:
[NSString stringWithString:s]
[NSNumber numberWithDouble:d]
[NSValue valueWithInt:i]
[NSDictionary dictionaryWithObjectsAndKeys:<blah>]
等等
为什么约定不简单地以单词“with”开始便利构造函数?那么我们将有:
[NSString withString:s]
[NSNumber withDouble:d]
[NSValue withInt:i]
[NSDictionary withObjectsAndKeys:<blah>]
等等
这是一个次要的讨论点,但我想我应该抛出一个,看看是否有比我更有影响力的人可以解释我脑海中的所有回声。
显然,我不会请求 AAPL 重写 appKit 以支持我的建议,但是是否有任何理由反对这样命名我自己的便利构造函数?
当然,我可以在自己的代码中使用任何我想要的约定,但我讨厌盲目地逆流而上。
最佳答案
实际上,这样做是有技术原因的。如果每个 shoelaceWithString:
类型的方法都更改为仅 withString:
,我们最终会得到大量具有相同名称方法和不同签名的类。这对编译器的静态类型检查起到了欺骗作用,并可能导致它抛出各种烦人和不必要的警告。
Cocoa 文化还有一个方面,即开发人员喜欢他们的代码是 self 记录的。这意味着方法名称表明它们的参数是什么以及它们返回什么。 Apple 的编码指南实际上警告了名称模糊的方法,建议在名称中添加单词以明确方法的作用是可取的。
关于objective-c - 为什么不用 "with"启动便利构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1017652/