【问题标题】:Static values vs passing parameters静态值与传递参数
【发布时间】:2012-06-07 10:08:19
【问题描述】:

我有一种情况,我必须在班级上下 2-3 个独立班级传递List<>。现在我主要使用参数传递列表,因此所有 3 个类都获取列表。我是否应该使用静态列表而不是在所有类中传递列表来简化代码,例如Class23.ListObjects.Add(),然后在操作完成后释放静态值,以便下一个操作从空列表开始。现在感觉参数越来越多,如果列表具有正确的值,我会感到困惑,忘记将列表传递给下一个类,等等。你怎么看?

【问题讨论】:

    标签: c#


    【解决方案1】:

    我建议您创建一个新类来表示由各种类执行的组合操作(如果您愿意,可以使用“上下文”类)。执行操作所需的值可以作为实例变量保存在该上下文中,以及用于执行工作的类的实例。

    这样,您可以避免传递东西(随着代码的发展,这可能会变得有些难看),同时避免使用“全局”变量。数据完全在它需要的范围内,并在整体操作完成时进行处置。

    【讨论】:

    • 上下文概念抽象在这里听起来很合理,虽然我不太确定确切的问题是什么,但我不认为静态成员是好的做法。
    • @zinking:同意,在少数(但有一些)实例中static 是最佳选择。在这里使用它感觉不对。
    【解决方案2】:

    在编码实践中,使用静态或全局变量是不好的,通过参数被认为是好的。

    【讨论】:

      【解决方案3】:

      如果您使用静态参数,如果这些函数在您的代码中的多个位置使用,您将面临数据损坏的风险,尤其是在涉及线程的情况下。

      例如,假设 A 类需要使用作用于静态列表的函数。在这些函数完成之前,B 类也尝试使用它们,导致列表从两个调用中获取数据,因为在两种情况下都使用了相同的静态列表。

      【讨论】:

        猜你喜欢
        • 2011-02-15
        • 2016-07-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-25
        • 1970-01-01
        相关资源
        最近更新 更多