什么是一个很好的平均方法大小?

时间:2010-07-06 11:55:49

标签: c# java oop

我说1到5行。除此之外,您应该通过电子邮件向您的开发团队的其他人发送电子邮件。这有助于重用,强制良好的命名和耦合方法。

有任何意见吗?

由于

6 个答案:

答案 0 :(得分:16)

方法代码大小是方法职责的错误指标。该方法应该具有完全一个主要行为/创建任务,而无需重复代码。

答案 1 :(得分:5)

1和5行似乎对我来说太小了。如果你把那些没有做太多处理的简单商业应用放在一起那么这似乎没问题,但是如果有任何算法或流程,那么顺序编写处理步骤往往更具可读性(并且可维护性),而不是分散在多个方法中或者类 - 即使它对于封装,验证等是合乎逻辑的。

在许多情况下,5行甚至不足以验证参数并遍历集合。

我会建议'关于一页'; 20至30行是理想的。


例如:这对我来说似乎有效,但你会认为8行不好:

    // Calculates the depth of the layer in the object graph
    public int GetIndex()
    {
        int ct = 0;
        ViewLayer pos = this;
        while (pos.Parent != null)
        {
            ct++;
            pos = pos.Parent;
        }
        return ct;
    }

(我意识到我通过发布代码开放自己的批评,但我的观点是,这是可读的代码)

答案 2 :(得分:2)

让代码的要求决定了多长时间。

你真的宁愿你的开发人员花时间写电子邮件而不是开发代码库吗?

答案 3 :(得分:1)

有点极端,我认为5或更小的周期复杂度是一个合理的度量而不是行数。将代码分解为少于5行可能意味着使其难以理解和费力。我知道会有不同的想法,这就是为什么这个主题应该被视为主观的。

答案 4 :(得分:1)

我认为这比那更复杂。

首先,方法倾向于遵循幂律分布:在任何给定的项目中,都会有一些外部方法比绝大多数其他方法大得多,平均大小永远不会收敛。

其次,如果您需要发出十个API调用以完成一项特定任务,那么将这一系列调用分解为两种方法只是为了满足大小上限是没有意义的。当你将某些东西分成几部分时,你必须给出两个名字(甚至三个)而不是一个。你必须记录每个部分等。底线:小是好的,但不要盲目跟随它。最好的建议是尽量使每个方法都连贯(重点)。

答案 5 :(得分:1)

肯定只是让代码更难导航和理解,A调用B,调用C,然后是E,然后是D,等等。我不确定它是如何强制执行良好命名的,我有足够的麻烦想出好的描述性名称我现有的方法,永远不要用5行。

它还使类更长,因为你必须拥有方法签名,打开和关闭大括号以及额外的可读性行。

此外,我的大多数linq语句都超过5行。