你在哪里添加新方法?

时间:2009-06-18 05:45:33

标签: coding-style

当你在一个类中添加一个新方法时,你把它放在哪里?在课程结束时...顶部?你是否将方法组织成特定的分组?按字母顺序排序?

只是寻找保持课程方法有条理的一般做法。

更新分组后,您在组中添加新方法的位置?只是结束或你使用某种子分组,排序?

更新2 嗯......猜猜问题不像我想的那么清楚。我不是在寻找班级组织。我特别感兴趣的是为现有的类添加一个新方法。例如:

public class Attendant
{
    public void GetDrinks(){}
    public void WelcomeGuests(){}
    public void PickUpTrask(){}
    public void StrapIn(){}
}

现在我们要添加一个新方法PrepareForCrash()。它去哪儿了?在列表的顶部,底部,按字母顺序或靠近StrapIn()方法,因为它是相关的。

7 个答案:

答案 0 :(得分:5)

靠近“StrapIn”,因为它是相关的。这样,如果您稍后重构,所有相关代码都在附近。

大多数代码编辑器允许您在另一个窗格中按字母顺序浏览方法名称,因此在实际代码本身中组织代码在功能上是有意义的。将功能方法组合在一起,可以在导航课程时更轻松。

答案 1 :(得分:3)

为了善良,不按字母顺序排列!

我倾向于按照我期望在对象生命期间调用它们的顺序对函数进行分组,因此从头到尾读取头文件往往会解释类的操作。

答案 2 :(得分:1)

我认为这是个人选择。 但是我喜欢组织我的课程。

public class classname  
{
    <member variables>

    <constructors>
    <destructor>

    <public methods>

    <protected methods>

    <private methods>
}

原因就在这样。

顶部的成员变量
查看存在哪些成员变量以及它们是否已初始化。

<强>构造 要查看成员变量是否已设置/初始化以及该类的所有构造选项是什么。

<强>析构
要查看类的清理方式,请使用构造函数和成员变量对其进行验证。

公共方法
要查看对象的可用合约可以使用的合约是什么。

受保护的方法 要查看继承的类将使用什么。

隐私方法 因为它是关于类内部的信息,如果你需要了解内部结构,你可以快速直接滚动到最后。但要了解课程的界面,一切都在开始。

更新 - 基于OP的更新
从逻辑上讲,一个好方法是按照他们的工作类别组织方法。 通过这种方式,您可以获得对方法进行分类以及从IDE进行字母搜索的可读性(如果这是在IDE中)。

然而,在实际意义上,我认为将方法放在该部分的末尾是最好的方法。如果代码比你自己共享的那样,对于每种方法来说,很难持续警察每种方法的去处,因为它是主观的。

如果你要把它作为一个标准,那么就很难为每种方法的位置提供界限。

答案 3 :(得分:0)

我喜欢C#和VB.net是否能够使用#region标签,所以我的课程通常都是这样的

class MyClass
{

#region Constructors

public MyClass()
{
}

public MyClass(int x)
{
_x = x;
}

#endregion

#region Members
private int _x;
#endregion

#region methods
public void DoSomething()
{
}
#endregion

#region Properties
public int Y {get; private set;}
#endregion

}

所以基本上你把类似的东西放在一起,这样你就可以将所有东西都折叠起来,然后更快地找到你的东西。

答案 4 :(得分:0)

一般来说,这取决于现有的分组;如果有一个新方法适用的现有分组,我会把它放在那里。例如,如果有一组运算符,我会将新方法与运算符放在一起,如果它是一个运算符。

当然,如果没有良好的分组,添加方法可能会建议新的分组;我认为这是重构的机会,并试图在合理的情况下重新组合现有的运营商。

答案 5 :(得分:0)

我将所有方法组织到公共方法,私有方法等区域,或者有时通过保存方法等功能组织。

答案 6 :(得分:0)

IMHO: 如果按字母顺序组织方法,则根据其名称添加新方法。否则将其放在相关组的底部。这有助于了解哪种方法更新。更大的问题是如何组织组中的方法,例如取决于什么属性,但这对每个人来说都更具个性,取决于特定的类。