在Objective-C深入研究之后,我开始重新使用C#进行编码。我想知道,在C#中,在性能,内存开销和代码可读性方面,使用嵌套方法调用编写代码有任何特殊的好处或缺点。保养?或者更容易阅读和/或更容易遵循代码,超过任何可能的速度或内存优势(内存优势部分可以是ObjC /非托管代码说话)?
示例(x,y,z,w,t,e& g都是int):
// non-nested
// someMethod returns an int
int b = someMethod(w,t,e);
int a = ((x + y) * b);
int c = a + (b * g);
return a + b + c;
// nested
// someMethod returns an int
return (((x + y) * someMethod(w,t,e)))
+ (someMethod(w,t,e)) + (((x + y) * someMethod(w,t,e))
+ (someMethod(w,t,e) * g));
遵循非嵌套代码更容易,但在嵌套代码中,您不必实例化三个变量;它也是一行代码的四行代码(虽然为了便于阅读,一行分为三行)。我只是不确定哪种方式更好,或者在C#编程社区中更容易接受。任何见解都会非常感激。谢谢!
答案 0 :(得分:3)
如果someMethod(w,t,e)
做了一些非常重要的事情,那么调用它三次将比进行一次调用并存储结果要慢。
请注意,只有当函数someMethod(w,t,e)
是一个“纯”函数时,这两个表达式才是等价的,这意味着它没有副作用,并且它为同一组参数返回相同的值。 / p>
在初始设计和编码过程中,您应该努力获得最佳的可读性。在分析之前考虑方法调用的开销是不成熟的优化。
答案 1 :(得分:2)
出于多种原因,将所有内容分成不同的方法是一种很好的编码实践。
当然有更多的开销,但至于速度和内存,我还没有测试过,但我相信你可能会失去一些。虽然考虑到人们今天运行的计算机类型,但我不认为它是显而易见的。
我已经做了很多小项目,我只是尽快丢弃代码,但是一旦我开始取得进展或者我的程序开始变得有点复杂,我总是回去重新整理所有内容。方法
它使一切变得简单,干净和可读。
答案 2 :(得分:0)
可读性几乎总是更好。查看一本名为Clean Coding的书。在您的示例中,一旦构建代码,将使用0个额外的内存。