【发布时间】:2014-10-08 04:34:08
【问题描述】:
目前在我们的 SDK 中,我们允许用户在用户记录上设置键/值信息,该信息只能是日期、字符串或数字。我们创建了一个我们称之为 Attribute 的协议,我们扩展(类别)NSString 和 NSDate 并将其确认到协议中。所以现在在我们设置这些属性的方法中,我们要求一个值参数来确认 Attribute 协议。这将帮助我们进行编译时检查,但我想知道是否有必要由于 Objective C 的动态特性(我是一名 Java 开发人员),如果值不是 NSString NSDate 或NS 号码?
【问题讨论】:
-
在编程车间检测到编译时错误。不一定是运行时错误。
-
(或者,正如我所知道的那样:让客户进行测试——他们通常是这样的 PITA,他们不妨做一些有用的事情 . 我不知道它们还有什么用处!)
-
应用程序可能会正常失败。只是想知道 ObjC 开发人员的最佳实践是什么?
-
从您的描述中不清楚您在类别中检查什么,或者它是如何进行编译时检查的。从根本上讲,听起来您实际上是在指定一个类/结构并为其分配参数,而不是例如将参数放在字典中。这确实可以确保数据类型正确,参数拼写正确等。这对您来说有多重要取决于您来判断——“严格性”和“灵活性”之间总是存在权衡,这会影响编码成本和错误率,而且并不总是以可预测的方式。