当前位置:  开发笔记 > 运维 > 正文

方法:多个参数或结构?

如何解决《方法:多个参数或结构?》经验,为你挑选了1个好方法。

我注意到,通过查看Apple的示例代码,他们倾向于设计接收结构而不是多个参数的方法.这是为什么?就易用性而言,我个人更喜欢后者,但就性能而言,是否有比另一种更好的选择?

[pencil drawPoint:Point3Make(20,40,60)]
[pencil drawPointAtX:20 Y:50 Z:60] 

shek.. 5

不要担心性能问题.不要过早优化(直到你知道你有问题)并且在考虑代码中的性能热点时,它几乎总是在处理I/O的区域(例如,数据库,文件).因此,将有关消息传递样式的问题与性能分开.您希望首先做出最佳设计决策,然后仅在需要时优化性能.

话虽如此,Apple不推荐或更喜欢传递多个参数与结构/对象.如果在Objective-C的范围之外推广它,则在特定场景中使用个体参数或对象时使用它们.换句话说,你可以不遵循黑白答案.相反,在决定时使用以下准则:

当方法理解对象的许多/所有成员时,传递对象/结构

当您要验证对象的各个成员之间的关系的某些规则时,传递对象/结构.这允许您确保方法的使用者在调用方法之前构造有效对象(从而消除了验证这些条件的方法的需要).

当明确方法有意义并且只需要某些元素而不是整个对象时,传递单个参数

使用您的示例的变体,采用两个坐标(X和Y)的绘制方法将受益于获取Point对象而不是两个变量X和Y.

方法retrieveOrderByIdAndName最好通过获取单个id和name参数而不是某个容器对象来设计.

现在,如果有一些方法可以通过许多不同的标准来检索订单,那么它将创建一个retrieveOrderByCriteria并传递一些标准结构.



1> shek..:

不要担心性能问题.不要过早优化(直到你知道你有问题)并且在考虑代码中的性能热点时,它几乎总是在处理I/O的区域(例如,数据库,文件).因此,将有关消息传递样式的问题与性能分开.您希望首先做出最佳设计决策,然后仅在需要时优化性能.

话虽如此,Apple不推荐或更喜欢传递多个参数与结构/对象.如果在Objective-C的范围之外推广它,则在特定场景中使用个体参数或对象时使用它们.换句话说,你可以不遵循黑白答案.相反,在决定时使用以下准则:

当方法理解对象的许多/所有成员时,传递对象/结构

当您要验证对象的各个成员之间的关系的某些规则时,传递对象/结构.这允许您确保方法的使用者在调用方法之前构造有效对象(从而消除了验证这些条件的方法的需要).

当明确方法有意义并且只需要某些元素而不是整个对象时,传递单个参数

使用您的示例的变体,采用两个坐标(X和Y)的绘制方法将受益于获取Point对象而不是两个变量X和Y.

方法retrieveOrderByIdAndName最好通过获取单个id和name参数而不是某个容器对象来设计.

现在,如果有一些方法可以通过许多不同的标准来检索订单,那么它将创建一个retrieveOrderByCriteria并传递一些标准结构.

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有