在课堂上正确组织公共/受保护/私人功能

时间:2010-03-10 19:26:44

标签: oop

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想要公共/受保护/私人订购的理由?它真的归结为偏好问题,还是我没有看到的好处?

3 个答案:

答案 0 :(得分:6)

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

您可以订购方法:

  • 按字母顺序排列(GetEntityA,GetEntityB,StoreEntityA,...)
  • 按功能区(EntityA方法,EntityB方法,......)
  • 按分类(验证方法,转换方法,辅助方法......)
  • 通过可见性(公共方法,内部方法,受保护的方法,......)

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

答案 1 :(得分:3)

如果你使用类似IDE的东西,那基本上没关系。您将通过GUI导航,排序属性列表,成员等,因为您确实需要它。

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

答案 2 :(得分:2)

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

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

后两者感觉它们仅仅是出于审美原因而不是考虑到如今流行使用IDE的任何真正的组织效益,使得功能导航变得非常简单。

然而,当您正在工作或阅读某个功能时,在工作时使用向上翻页和向下翻页会更容易,而不是在您想要从公共功能导航时始终进行查找功能它的辅助功能。