何时使用方法重载VS“请求”对象

时间:2009-02-05 21:42:56

标签: parameters methods overloading method-signature

确定何时使用方法重载以及何时使用单独的“请求”类,最好的“经验法则”是什么?例如:

MakePancakes(int size)
MakePancakes(int size, bool addBlueBerries)
MakePancakes(int size, bool addBlueBerries, ...)

相反:

MakePancakes(PancakeOptions options)

最好是坚持一种方式,还是在“必要”时使用?关于何时或何地应该使用另一个?

您如何决定使用哪个,以及为什么?

2 个答案:

答案 0 :(得分:2)

使用MakePancakes(PancakeOptions选项)的真正优势在于,您无需更改方法实现即可更改PacakeOptions的属性数。当参数的数量可以改变或是可选的时,它会很有用。以这种方式表示配置/属性/选项是有意义的。

但我认为它不能替代重载方法。

一些经验法则:

  • 如果一个方法有超过5个参数,那么它可能不止一件事。我会检查该方法并尝试将其拆分为更具体的功能。

  • 方法的所有属性都是必需的(即不能为空)

答案 1 :(得分:1)

在创建请求类型或枚举之前,我自己不需要很多重载(枚举数组似乎是一个非常简单的请求对象)。也许3-4?一些框架方法有9-10个重载,我觉得有点讨厌,但这更像是一个风格问题。

相关问题