-2

哪个最好?

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


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

或者

private long sumVals()
{
    long numUnits = dbReturn("NUns");
    long targetSpeed = dbReturn("TSpd");

    return (numUnits / targetSpeed) * 60;
}


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

尝试将它们全部放在一行上,这样总体上的代码更少,还是像第二行一样将其分散开来更好?

一个或另一个更快?有没有好处,例如,在编译时?

4

3 回答 3

3

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

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

请参阅此问题以获取更多答案。

于 2013-07-14T17:52:30.973 回答
0

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

如果您将函数从dbReturnto重命名,GetDatabaseValue我认为我无法想出比以下更富有表现力的方式来编写此函数:

return (GetDatabaseValue("NUns") / GetDatabaseValue("TSpd")) * 60);

这完美地传达了意图(尽管我不知道是什么"NUns"意思"TSpd")。更少的符号意味着在阅读代码时需要理解的内容更少。

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

据我所知,这两种方法都不会提高运行时性能。编译器很棒——他们在你不知情的情况下进行内联。唯一的区别在于代码的可读性。

于 2013-07-14T18:22:59.410 回答
-2

对我来说,时间越长越好。现代编译器会将大多数代码压缩得非常快。但是,能够通过大量注释和易于阅读的代码来维护代码非常重要……尤其是如果您是必须维护他人代码的人之一!

所以,我的投票是更长的版本(评论解释你在做什么!)

于 2013-07-14T17:52:22.247 回答