适当范围有什么好处?

时间:2010-12-09 10:51:56

标签: c# scope

所以是的,这个问题基本上都说明了一切。当您确保私人会员/方法/任何被标记为私人(或受保护,或公开,或内部等)的适当时,您会获得什么?

我的意思是,当然我可以把我的所有方法标记为公开,一切都应该可以正常工作。当然,如果我们谈论良好的编程实践(顺便说一句,我是一个坚实的倡导者),我会将一个方法标记为私有,如果它应该被标记为这样,没有问题。

但是,让我们抛开良好的编程实践,并从实际的数量增益来看待这一点。如何正确确定我的方法,成员,班级等范围?

我认为这通常会转化为性能提升,但如果有人可以提供更多详细信息,我会很感激。

(出于这个问题的目的,我正在考虑使用C#.NET,但是嘿,请随意为您认为合适的语言/框架提供答案。)

编辑:大多数人指出这不会导致性能提升,是的,回想起来,我甚至都不知道为什么会这么想。可能缺少咖啡。

在任何情况下,任何优秀的程序员都应该知道适当的范围(1)如何帮助您的代码维护/(2)控制库/ app / package的正确使用;我有点好奇是否有任何其他好处,你从中得到的那些显然不是很明显。基于下面的答案,它看起来基本上总结了这两件事最重要的。

5 个答案:

答案 0 :(得分:8)

性能与方法的可见性完全无关。虚方法有一些开销,但这不是我们范围的原因。它与代码的维护有关。您的公共方法是您的类或库的API。作为一名班级设计师,您希望为外界提供一些保证,即未来的变化不会破坏其他人的代码。通过将某些方法标记为私有,您将剥夺用户依赖某些实现的能力,这允许您随意自由地更改该实现。

即使没有可见性修饰符的语言(如python)也有将标记方法标记为内部且可能发生变化的约定。通过使用_underscore()为方法添加前缀,您向外界发出信号,如果您使用该方法,则您需要自担风险,因为它可以随时更改。

另一方面,公共方法是显式进入代码的方式。应尽一切努力使公共方法向后兼容,以避免我上面描述的陷阱。

答案 1 :(得分:5)

通过更好的封装,您可以提供更好的API。只有您班级用户感兴趣的方法/属性可用:可见。 接下来,确保不能调用/修改某些不应调用/修改的变量。

这是最重要的事情。为什么你认为这会带来性能提升?

答案 2 :(得分:5)

我认为你从正确的范围中获得了两个重要的特征。您的API规模缩小,并且明确专注于手头的任务。

其次,您可以轻松实现,因为您可以自由更改实现细节而无需更改公开的API。

我无法看到辅助功能修饰符如何以任何方式影响性能。

答案 3 :(得分:2)

主要有两种方法/属性。

  1. 这有助于对任何消费它的人执行任务。 (推荐范围:Public
  2. 这有助于上述方法完成任务。 (推荐范围:PrivateProtected
  3. Type 1方法是任何客户端代码所需的唯一方法,不需要任何其他方法。这可以避免混淆,保持简单并防止客户端代码做错事。

    Type 2方法是将Type 1方法划分的方法。他们帮助Type 1方法完成他们的任务,并且仍然允许他们简单,简洁,复杂和可读性更高。客户端代码并不是真正需要它们,而只需要类/模块本身。

    一个公平的例子是汽车。你所拥有的是油门踏板,制动器,变速箱等。你没有接口来了解引擎盖下的细节。那是机械师。

答案 4 :(得分:2)

在C#编程中,它有助于确保您的API /类/方法/成员“易于正确使用且难以正确使用”