2

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

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

相对于:

MakePancakes(PancakeOptions options)

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

你如何决定使用哪个,为什么?

4

2 回答 2

2

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

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

一些经验法则:

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

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

于 2009-02-05T22:13:59.417 回答
1

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

于 2009-02-05T22:03:25.943 回答