Objective c 使用多个参数设计API
我正在为iPhone设计一个API。设计包含多个参数(最多20个变量)的API函数的最佳方法是什么。传入一个定义了必要字段的自定义对象、一个通用键值字典(Obj-C中的NSDictionary)还是将它们全部列出?还有什么其他建议Objective c 使用多个参数设计API,objective-c,api,Objective C,Api,我正在为iPhone设计一个API。设计包含多个参数(最多20个变量)的API函数的最佳方法是什么。传入一个定义了必要字段的自定义对象、一个通用键值字典(Obj-C中的NSDictionary)还是将它们全部列出?还有什么其他建议 我倾向于为每个API声明一个对象,但由于有许多API需要定义,我对使用这种方法持谨慎态度。这取决于您创建的API类型 如果是针对具有一般理解的信息模型的服务,那么拥有自定义模型对象可能是一个好主意,因为它们倾向于简化对整个API的理解 OTOH,如果它更像是一个通用A
我倾向于为每个API声明一个对象,但由于有许多API需要定义,我对使用这种方法持谨慎态度。这取决于您创建的API类型 如果是针对具有一般理解的信息模型的服务,那么拥有自定义模型对象可能是一个好主意,因为它们倾向于简化对整个API的理解 OTOH,如果它更像是一个通用API,许多参数是可选的,或者每个方法的模型对象都是唯一的,那么使用NSDictionary可能会更好,它清楚地记录了所需的键(以及在函数开始时进行适当的检查) 互联网站上也有关于该主题的广泛信息,请参阅,以获取好的想法、好的示例和十大建议
祝你好运 我现在能想到的最复杂的方法是将NSDictionary作为参数。我会这样做。您需要20个参数来初始化对象?您需要一些参数将对象初始化为默认状态。然后使用属性更改其状态
在内部,您可以将20个参数/状态存储在NSDictionary中,以便于维护 大多数API设计师都同意,如果可能的话,应该避免长参数列表,例如Joshua Bloch(高效Java)认为5个或更多参数太多了。避免这种情况的一些方法包括:
听起来你已经考虑过这些选项中的大多数了,所以我可能不会告诉你任何新的东西。对于我自己的偏好,我更倾向于NPI样式,因为它避免了长参数列表、强类型、命名每个参数、向后兼容,并且仍然提供了相对紧凑的语法。与NSDictionary方法相比,它(对您而言)更易于键入,但更重要的是,它便于您的用户使用,并且与NSDictionary解决方案不同,它通过您的头文件使受支持的“参数集”变得明显(并且总是正确的)。如果您的API确实需要20个参数,请使用20个参数。如果将部分或所有这些参数聚合到自定义对象中是有意义的,那么一定要这样做,但不要仅仅为了使参数列表变小而创建自定义对象。举个简单的例子,如果一个方法采用一个点(x,y,z)的坐标,那么创建一个对象来建模一个点并将其作为单个参数传递是合法的。您不应该创建仅用于对API参数列表建模的对象 我只会在我确实有一组可扩展的键值对的情况下使用NSDictionary方法,所有这些键值对都是可选的。在其他情况下不使用它的原因是,如果使用API的程序员忽略了一个强制参数,那么直到运行时才能检测到错误。明确命名每个参数的参数列表允许编译器检测遗漏 API的参数数量必须限制在任意小值的想法是完全错误的。API应该根据需要使用尽可能多的参数