【问题标题】:Proper organization of public/protected/private functions in classes在类中正确组织公共/受保护/私有功能
【发布时间】:2011-01-26 01:36:36
【问题描述】:

Resharper(与 StyleCop 搭配使用)在遵守其大部分规则时让我有点奇怪。其中一个规则集(我相信来自 StyleCop)强制首先放置公共函数,然后是受保护的静态函数,然后是受保护的,然后是私有静态函数,最后是私有函数。

私有函数通常是作为助手支持公共函数功能的函数。假设我有以下 StyleCop 强制执行的函数顺序:

public FunctionA
public FunctionB

private FunctionAHelper1
private FunctionAHelper2
private FunctionBHelper1
private FunctionBHelper2

...虽然还不错,但我发现自己希望将支持的私有方法保持在调用它们的函数附近,所以它看起来更像这样:

public FunctionA
private FunctionAHelper1
private FunctionAHelper2

public FunctionB
private FunctionBHelper1
private FunctionBHelper2

您学到了哪些指导班级中方法组织的知识? StyleCop 想要公共/受保护/私人订购的理由是什么?这真的归结为偏好问题,还是有我没有看到的好处?

【问题讨论】:

标签: oop


【解决方案1】:

这绝对是一种风格偏好,就像围绕在哪里放置大括号、括号前后是否有空格、空行等的风格参数一样。

和你一样,我更喜欢将私有函数放在使用它们的公共函数附近。更具体地说,我更喜欢按用途或功能对函数进行分组,而不是按字母顺序或可见性。

考虑到如今 IDE 的普遍使用,后两者感觉它们只是出于审美原因,而不是任何真正的组织利益,这使得函数导航变得非常简单。

然而,当您在某个功能上工作或阅读时,在工作时只使用向上翻页和向下翻页会更容易,而不是在您想从公共功能导航时一直使用功能查找到它的辅助函数。

【讨论】:

    【解决方案2】:

    如果你使用任何类似 IDE 的东西,基本上没关系。您将根据实际需要通过 GUI 浏览代码、属性排序列表、成员等。

    (我相信代码格式化在编程时不应该成为问题。当然它必须是理智的并且符合公司标准,但是有工具会自动进行格式化。)

    【讨论】:

      【解决方案3】:

      这真的取决于您喜欢什么,以及您喜欢如何浏览代码。

      您可以订购您的方法:

      • 按字母顺序(GetEntityA、GetEntityB、StoreEntityA、...)
      • 按功能区域(EntityA 方法、EntityB 方法...)
      • 按分类(验证方法、转换方法、Helper 方法...)
      • 按可见性(公共方法、内部方法、受保护方法...)

      您当然可以按字母顺序与可见性或任何您喜欢的组合。 我更喜欢字母顺序与可见性的组合,以及大类与分类的组合。对于 DAO 类有时是功能区)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-08
        • 2011-06-19
        • 2012-06-02
        • 2017-12-19
        • 1970-01-01
        • 2011-05-27
        • 2017-01-20
        • 2010-12-18
        相关资源
        最近更新 更多