我只是在考虑一个编程设计问题:
说,我将5个字符串传递给从一个类到另一个类的方法。它们的细节如下: 主机名 主机域 用户子域 用户名 密码
哪个更好? 1.将它们作为NSString对象的数组传递 要么 2.重新定义被调用的方法以接受5个不同的NSString参数?
哪种方式更有效?
答案 0 :(得分: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
,同时保留方法的签名。
如果在可预见的将来参数的数量可能保持为5,那么具有五个单独参数的方法同样可行。具体来说,如果参数的数量对应于世界上的基本内容或者不会改变的算法,那么使用单个参数的方法是一个不错的选择。例如,如果您的方法采用左子树和二叉树的右子树作为其输入,则具有两个参数是合适的,因为二进制树不能获得更多或更少的参数而不会成为二叉树以外的其他参数。
传递一个简单的未命名对象数组是最不可读的选择,这也是最难维护的。除非所有对象与程序具有相同的“含义”,否则它们不应放在同一个数组中。例如,将主机域和用户子域放入同一个阵列是一种误导程序读者的快速方法,使维护工作变得非常复杂。