Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 什么';这是一个很好的平均方法大小?_C#_Java_Oop - Fatal编程技术网

C# 什么';这是一个很好的平均方法大小?

C# 什么';这是一个很好的平均方法大小?,c#,java,oop,C#,Java,Oop,我说在1到5行之间。除此之外,您还应该向开发团队的其他成员发送一封电子邮件来证明这一点。这有助于重用、强制使用良好的命名和耦合方法 有什么评论吗 多亏了有点极端,我认为5或更少的循环复杂度是一个合理的度量,而不是行数。将代码分解为少于5行可能意味着使其无法阅读和费力。我知道在这个问题上会有不同的想法,这就是为什么这个线程应该以主观的方式关闭。1行和5行对我来说似乎太小了。如果你把简单化的业务应用程序放在一起,不做太多的处理,那么这似乎是可以的,但是如果有任何算法或流程,那么按顺序编写处理步骤通常

我说在1到5行之间。除此之外,您还应该向开发团队的其他成员发送一封电子邮件来证明这一点。这有助于重用、强制使用良好的命名和耦合方法

有什么评论吗


多亏了

有点极端,我认为5或更少的循环复杂度是一个合理的度量,而不是行数。将代码分解为少于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;
    }

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

方法代码的大小对于方法的责任来说是一个错误的度量标准。该方法应该只有一个主要的行为/创造任务,没有代码重复。

我认为它比这更复杂

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


第二,如果您需要发出十个API调用来完成一个特定任务,那么将调用序列分成两个方法来满足大小上限是没有意义的。当你把某物分成几个部分时,你必须给出两个名字(甚至三个),而不是一个。你必须记录每个部分,等等。底线是:小是好的,但不要盲目跟随它。最好的建议是尽量使每个方法连贯一致(有重点)。

这肯定会使代码更难导航和理解,A调用B,调用C,然后调用E,然后调用D,等等。我不确定它如何强制好的命名,我很难为我现有的方法想出好的描述性名称,哪怕只有5行

它还使类变长,因为您必须具有方法签名、开括号和闭括号,以及一行额外的可读性


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

让代码的要求决定长度有多长


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

有25个1行方法和一个100行方法可以吗?我个人认为,只要需要,大小/行数就没有函数做一件事那么重要了。我个人认为没有一个明确的答案是“正确的”。但是我想你会想看“鲍勃叔叔”马丁今年在伦敦QCon的一次演讲,他在演讲中谈到了这个话题:根据你的规则和我的风格(大括号在一行上),我甚至不能在一个方法中有一个完整的if/then/else块。对我来说似乎有点极端。如果你使用奥尔曼风格,你甚至不能在五行中安装一个试接,如果你使用1TB,则几乎不能安装一个试接这太长了,您应该使用如下内容:
public int GetIndex(ViewLayer pos=this){\n return(pos.Parent==null)?0:1+GetIndex(pos.Parent);\n}\n
在3行处打卡:-)这不是干净的代码。对于这样一个琐碎的任务,干净的代码不需要注释。首先,名称可能是DepthInObjectGraph。其次,这可能是递归的,需要1行或4行,这取决于您是喜欢if/else还是?:@qertiop-干得好,您找到了改进代码的方法-这几乎总是可能的。您的评论是否与答案相关,即您认为任何方法都不应超过1-4行?