[英]Benefits (and drawbacks) of C# nested method calls
在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#编程社区中更容易接受。 任何见解都会非常感激。 谢谢!
如果someMethod(w,t,e)
做了一件非常重要的事情,那么调用它三次将比进行一次调用并存储结果要慢。
请注意,只有当函数someMethod(w,t,e)
是一个“纯”函数时,这两个表达式才是等价的,这意味着它没有副作用,并且它为同一组参数返回相同的值。
在初始设计和编码期间,您应该努力获得最佳可读性。 在分析之前考虑方法调用的开销是不成熟的优化。
出于多种原因,将所有内容分成不同的方法是一种很好的编码实践。
当然有更多的开销,但至于速度和内存,我还没有测试过,但我相信你可能会失去一些。 虽然考虑到人们今天运行的计算机类型,但我不认为它是显而易见的。
我已经做了很多小项目,我只是尽快抛出代码,但是一旦我开始取得进展或者我的程序开始变得有点复杂,我总是回过头来重新组织所有方法。
它使一切变得简单,干净,可读。
可读性几乎总是更好。 查看一本名为Clean Coding的书。 在您的示例中,一旦构建代码,将使用0个额外的内存。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.