【问题标题】:Too many method within method?方法中的方法太多?
【发布时间】:2016-02-03 09:56:21
【问题描述】:

在我的Main() 中,我从ClassA 调用MethodA(),然后它将从ClassB 调用MethodB(),依此类推。这持续了大约 5 层,然后它最终将我想要的值返回给 Main()

每个方法中都有一个对象正在被传递和处理。

这是一个好习惯吗?这种情况还有其他方法吗?

【问题讨论】:

    标签: c# function methods


    【解决方案1】:

    是的,这是一个很好的做法。

    而且 5 个级别仍然非常接近于零。到了 500 你可能会停下来想一想,到了 5000 就会令人担忧。

    每个方法中都有一个对象正在被传递和处理。

    它将通过引用传递,因此没有开销。

    【讨论】:

    • 我同意这就是 OOP 的实际工作方式。然而,5000?不是很多吗?对我来说,调用堆栈中有 5000 个方法听起来像是调试地狱。
    • 确实,500 对我来说似乎已经令人担忧了。好吧,你可以进行一些递归,但是500的深度,真的有必要吗?我认为你必须先看看你的设计。
    • 500-5000 听起来更像是一个递归。并且有 5000 多个递归,您必须首先考虑内存使用情况......因为这可能会接近那里的限制。
    • 5000有点夸张。只是为了强调 5 什么都不是。
    【解决方案2】:

    调用堆栈的深度为 5 不算什么。在您在 Windows 窗体或 WPF 应用程序中完成任何操作之前,您已经拥有 5 个调用堆栈。

    将框架放入堆栈确实需要一些成本,但您现在不必为此担心太多。您必须注意是否要递归执行操作,因为帧的数量会迅速增加。这可能会很昂贵。

    如果您丢失了调用堆栈的概览,您必须担心。在我看来,100 的调用堆栈很难阅读,如果你是初学者肯定会。

    【讨论】:

      【解决方案3】:

      如果您使用一种算法 - 例如 - 递归地运行一个字符数组以生成每个字符组合(不,我不是暴力密码黑客!) - 然后是深度递归调用堆栈也许是解决方案的一部分。

      正如 Henk Holterman 所说,通过引用传递的每个对象只是一个指针,32 位整数或 64 位整数,具体取决于处理器架构/构建配置。每次调用 4 个字节或 8 个字节。

      【讨论】:

        猜你喜欢
        • 2016-02-16
        • 1970-01-01
        • 2018-10-24
        • 2018-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-09
        • 1970-01-01
        相关资源
        最近更新 更多