2

我只是在考虑一个编程设计问题:

比如说,我将 5 个字符串从一个类传递到另一个类。它们是详细信息,例如:主机名主机域用户子域用户名密码

哪个更好?1. 将它们作为 NSString 对象数组传递或 2. 重新定义被调用的方法以接受 5 个不同的 NSString 参数?

哪种方法更有效?

4

1 回答 1

6

您错过了第三种方法 - 传递包含五个字段的自定义对象:

@interface HostDef // Pick a good name that fits well the purpose of your method.
@property (nonatomic, readwrite) NSString* hostName;
@property (nonatomic, readwrite) NSString* hostDomain;
@property (nonatomic, readwrite) NSString* userSubdomain;
...
@end

这是最具描述性和可扩展性的方法:如果您需要扩展传入的项目列表,则更改HostDef, 而方法的签名保持不变。

如果在可预见的将来参数的数量可能保持为五个,那么具有五个单独参数的方法同样好。具体来说,如果参数的数量对应于世界上基本的东西或算法中不会改变的东西,那么带有单个参数的方法是一个不错的选择。例如,如果您的方法将二叉树的左子树和右子树作为其输入,则有两个参数是合适的,因为二叉树不能获得更多或更少的参数而不成为二叉树以外的东西。

传递未命名对象的普通数组是最不可读的选择,也是最难维护的。除非所有对象对程序具有相同的“意义”,否则不应将它们放入同一个数组中。例如,将主机域和用户子域放在同一个数组中是一种误导程序读者的快捷方式,从而大大增加了维护的复杂性。

于 2013-04-14T10:56:11.943 回答