【问题标题】:When to use method overloads VS "request" object [closed]何时使用方法重载VS“请求”对象[关闭]
【发布时间】:2009-02-05 21:42:56
【问题描述】:

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

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

相对于:

MakePancakes(PancakeOptions options)

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

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

【问题讨论】:

    标签: parameters methods overloading method-signature


    【解决方案1】:

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

    但我不认为它是重载方法的替代品。

    一些经验法则:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2011-07-23
        • 1970-01-01
        • 2013-06-19
        • 2017-10-30
        • 1970-01-01
        • 2018-12-30
        • 1970-01-01
        • 2018-12-18
        • 1970-01-01
        相关资源
        最近更新 更多