1
24
你问这个问题的事实告诉我,前者更受欢迎。也就是说,在我看来,你的问题意味着你相信第一个代码更容易理解,而且你不确定第二个代码是否等价。软件设计的主要目标是管理复杂性。如果它现在让您感到困惑,那么它也可能是对您以后,或者对任何支持您的代码的人。 |
2
5
这两种说法的作用完全相同。这是一个优先事项,但我更喜欢Resharper的版本。更简洁,运动部件更少。更容易看到代码的意图。 |
3
5
这是两段代码的IL。我用你的代码创建了一个控制台应用程序来查看IL。从结果IL中可以看到,一个方法(method2)短了4个字节,但是两个方法运行的IL几乎相同,就性能而言……别担心。他们都会有同样的表现。更多地关注哪一个更容易阅读,更好地展示你的意图。 我的代码:
方法1的IL:
方法2的IL:
|
4
2
它通过使用resharper建议来降低代码的循环复杂性。 不管它是否容易阅读,都是个人意见,不过我更喜欢雷斯哈珀给你的建议。 它们是相同的,如果您想要可读性,我也可以建议如下:
或
|
5
1
它们是一样的。&是一个短路运算符,因此表达式的后半部分将不会计算safefilename是否为空。 |
6
1
它们是一样的。在一个衬板中,如果第一个条件失败,则不会对第二个条件进行评估。所以您不会得到空引用。 我敢打赌,在这两种情况下,IL是相同的。 我更喜欢第二个版本。 |
7
1
是的,这两种说法都会做同样的事情,你不必把更尖锐的建议当作福音,一个人认为可读的代码是另一个人的烂摊子。 还有一些其他的方法可以让你更容易阅读,safefilename是什么值类型?看起来它可能是一个可以为空的bool?如果是这样的话,你只需写,
|
8
0
从逻辑上讲,它们是相同的。任何性能差异都可能是不可消除的。在某些平台上,第二个表单可能会转换为更有效的二进制代码,因为第二个表单不使用条件。条件(不正确的推测性执行)会在CPU密集型工作中扰乱CPU的指令管道。然而,IL和抖动都需要发出足够质量的代码,以便产生很大的差异。 我同意你的可读性,但我不认为每个人都有这种感觉。 |
A.E · python中具有多个if语句的列表理解 2 年前 |
fc27 · 如果条件python循环不工作,请在中继续 2 年前 |
sentimain · 如何将if语句合并到另一个if语句中? 2 年前 |
bcsfh · 如果出现其他情况,则加倍 2 年前 |
Robbie McM · 如何使列表中的所有数据帧具有相同的列数? 2 年前 |