gpt4 book ai didi

c# - C# If 语句的设计模式或(文献)最佳实践

转载 作者:行者123 更新时间:2023-11-30 23:03:25 24 4
gpt4 key购买 nike

我知道这个问题的答案是否可能是主观的,(而且我还没有找到类似的问题)但我的问题如下:

我在互联网/文献上看到过不同来源的代码片段,其中一个来 self 项目中的队友。通常他们中的一些人会采用类似...的方法

if(a == true && b == false || c == true) {}

在我看来,if 语句可能是

  1. 如果 a 为真且 b 为假或 c 为真

    或者(口译员可能理解的内容,即使对我来说也是如此)

  2. 如果a为真且b为假或c为真

由于我的这种冲突,我必须正确思考什么陈述可以是A) executed or B) 本来是Codewriter的意思,我一直用自己的模式来让别人更容易理解,如下...

if(a == true && (b == false || c == true)) {}

if((a == true && b == false) || c == true) {}

或(更好的可读性,因为我认为括号内的子语句应该放在最后,而不是第一个)

if(c == true || (a == true && b == false)) {}

现在我错了吗?如果我是对的,是否有支持这种语法的设计模式?尽管我认为这是一种更好的方法,但 Resharper 却不这么认为并认为它是多余的。

另一方面,我想以任何方式学习更好的代码,如果我的队友做错了,我也应该让他们有机会变得更好,同时他们的代码也变得更具可读性(如果这是真的)

编辑:这与 If 语句如何工作或 bool 值或其优先级如何工作无关。它是关于在默认情况下不需要的语句中添加额外的括号(例如不需要编码中的注释),但可能是一种模式(例如注释或其他设计模式)有助于更清晰的编码。

最佳答案

看看 Precedence and Order of Evaluation在 MSDN 上。

关于您的示例,if (a == true && b == false || c == true) 被评估为 if (a is true AND b is false)或 c 为真,因为 && 的求值顺序高于 ||

就可读性而言,我不会明确评估 == true== false

这可读性差,也不那么干净......

if (a == true && b == false || c == true) { ... }

这更具可读性和更清晰...

if(a && !b || c) { ... }

Resharper 提示是因为您不需要明确指定求值顺序,如果它与没有括号的顺序完全相同,例如:

if ((a && !b) || c) { ... }if (a && !b || c) { ... } 相同 因此额外的括号是多余的,并且会增加代码的噪音,因此可读性差。

如果您需要显式更改求值顺序,Resharper 不应提示,例如:

if (a && (!b || c)) { ... }

关于设计模式,没有任何关于 OOP 设计模式的想法。这似乎更适合来自函数式编程世界的方面,例如模式匹配。

关于c# - C# If 语句的设计模式或(文献)最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49937969/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com