C# 代码行数越少越好吗?

C# 代码行数越少越好吗?,c#,coding-style,C#,Coding Style,哪一个最好 private long sumVals() { return (dbReturn("NUns") / dbReturn("TSpd")) * 60; } private long dbReturn(string dbField) { // ... access db, get value return retVal; } 或 尝试将所有代码都放在一行中,这样总体上代码就更少了,还是像第二行那样将代码分散开来 是一个更快还是另一个更快?有什么好处吗?例如

哪一个最好

private long sumVals()
{
    return (dbReturn("NUns") / dbReturn("TSpd")) * 60;
}


private long dbReturn(string dbField)
{
    // ... access db, get value
    return retVal;
}

尝试将所有代码都放在一行中,这样总体上代码就更少了,还是像第二行那样将代码分散开来


是一个更快还是另一个更快?有什么好处吗?例如,在编译时?

对我来说,时间越长越好。现代编译器会将大多数代码压缩到非常快的速度。然而,能够通过大量注释和易于阅读的代码来维护代码是非常重要的。。。。特别是如果你是那些不得不维护别人代码的人之一


所以,我的投票是较长的版本(有一条评论解释你也在做什么!)

你的情况很简单,所以第一个就可以了。但总的来说,我会选择第二个。 您(和其他人)可以读取代码,但不需要节省内存(更少的代码行和更少的变量),这一点很重要

如果选择第二种方式编写代码,那么代码将更易于理解和调试。如果您的变量名能够很好地解释代码,那么您也不必有很多注释,这使得您的代码总体上更易于阅读。(我不是要你停止评论,而是要写不需要琐碎评论的代码!)


请参阅以获取更多答案。

我的经验法则是包含足够的内容,以充分描述代码的意图,而不是更多。在我看来,给变量赋值只是为了立即使用这些变量,实际上可读性较差。它很好地传达了程序的流程,但没有传达实际意图

如果您将函数从
dbReturn
重命名为
GetDatabaseValue
,那么我认为编写此函数的方式没有比以下方式更具表现力的了:

return (GetDatabaseValue("NUns") / GetDatabaseValue("TSpd")) * 60);
这完美地传达了意图(尽管我不知道
“修女”
“TSpd”
是什么意思)。符号越少,阅读代码时需要理解的内容就越少

全面披露:包括额外符号确实提高了可调试性。当我第一次构建一个函数时,我是这样写的,这样我就可以跟踪哪里出了问题。但是,当我对实现感到满意时,为了我和同事的理智,我会尽可能地压缩它


就我所知,任何一种方法都不会获得运行时性能增益。编译器真是太棒了——它们在您不知情的情况下进行内联。唯一的区别在于代码的可读性。

括号有问题,太多了。)。你是否意识到
(numUnits/targetSpeed)*60
(numUnits*60)/targetSpeed
带整数(
Int64
)除法不同?已修复,不,我不知道。。。这只是一个例子:)这个问题似乎离题了,属于程序员。SEDuplicate:(简单的回答是:所有其他条件都是相等的,是的,但这里和其他地方很少是这样。)第一个问题总是60的倍数。例如,
(5/3)*60
给出了
60
,而
5*60/3
给出了
100
。通常我不喜欢用注释来解释我的代码。编写“自我解释”的代码始终是我的选择。基本上是罗伯特·C·马丁在他的书《干净的代码》中关于评论的章节中所说的。这显然是胡说八道。相反,“易读”并不意味着“长”。简洁通常可以提高可读性。所有好的风格指南都会告诉你这一点。
return (GetDatabaseValue("NUns") / GetDatabaseValue("TSpd")) * 60);