有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

c#混淆If语句?

我总是使用If语句(在C#中)作为(1.可选)

if (IsSuccessed == true)
{
   //
}

我知道没有必要将“==true”写为(2.备选方案)

if (IsSuccessed)
{
   //
}

但是,我之所以使用它,是因为它更具可读性,并且不会导致性能问题。当然,这是我的选择,我知道许多软件开发人员更喜欢第一种选择。什么是最好的用法,为什么


共 (6) 个答案

  1. # 1 楼答案

    我更喜欢第二种选择。我认为它更具可读性,但如果出于某种原因需要使用Boolean?,第一种选择的优点是保持不变

  2. # 2 楼答案

    我个人倾向于第二种选择。它读起来更自然,表明程序员实际上知道一个内置的bool类型,它是一级公民

  3. # 3 楼答案

    完全取决于风格。认真地无论你喜欢你自己的东西,无论你的工作风格如何

  4. # 4 楼答案

    我声称赞成第一种选择的人对布尔逻辑有粗略的理解。他们可能会理智地“理解”它,但他们肯定不会去摸索它;他们还没有将这种思维方式内化

    毕竟,有人会使用下面的成语吗?“如果明天下雨是假的,我们可以去游泳。”——,当然不是<没有人会说这样的话,太可笑了。有什么论据支持这样一种说法,即当应用于编程语言(与自然语言相反)时,这种习语突然变得清晰起来

  5. # 5 楼答案

    我不喜欢第一种选择。它不仅是多余的,而且一个简单的打字错误会引入一个bug

    <>考虑这个

    bool b = false;
    
    if (b = true) {
       Console.WriteLine("true");
    }
    

    显然,代码将输出“true”,但这可能不是程序员的意图

    幸运的是,像Resharper这样的工具会对此发出警告,但它会使用默认设置(*)进行编译

    直接使用bool将完全消除该问题

    (*)公平地说,VS也会对此发出警告,如果将警告作为错误打开,它甚至不会编译

  6. # 6 楼答案

    如果布尔值的名称清楚地表明它是什么,那么我总是选择版本2。然而,有时你会被一个特别迟钝的变量名所困扰,你不能改变,至少现在不能改变。。。重构很好,但在对代码进行功能更改时,我也尽量避免重构过多

    例如:

    if (!NoDropDownInHeader == true)
    {
      // Activates when there *is* a dropdown in the header)
    }
    

    实际上,我在生产代码中看到了这个特定示例,并将其简化为:

    if (NoDropDownInHeader == false)
    {
     // Activates when there *is* a dropdown in the header
    }
    

    和我个人认为这两个例子都是可读的(尽管第一个例子可能与心理分析困难相一致)比

    if (!NoDropDownInHeader)
    {
     // Activates when there *is* a dropdown in the header
    }
    

    注意:是的,我知道变量的名称很糟糕,但是在变量出现的众多位置对其进行更改超出了我所做更改的范围,因为位置的数量会影响