【问题标题】:Setting boolean field with method return使用方法返回设置布尔字段
【发布时间】:2010-12-10 07:15:40
【问题描述】:

我有这个代码:

if (something.equals(something1)) {
   myObj.setBoolean(true);
} else {
   myObj.setBoolean(false); 
}

有什么理由写上面的代码而不仅仅是:

myObj.setBoolean(something.equals(something1));

【问题讨论】:

  • 每次我看到像你的第一个示例这样的代码时,我都认为作者要么是一个完全的新手,要么是在影响下编码。
  • @Laurence: ...或者期望将来由新手维护代码。
  • @Fredrik:这种代码与这种评论没有什么不同:a = b + c; // a is b plus c。这些东西在编程入门书的前几章中是有意义的,但在其他地方没有。更冗长不一定更具可读性,我认为在这种情况下,对于具有任何程度的编程经验的任何人来说,更冗长的形式实际上更少可读。

标签: language-agnostic coding-style rules conditional-statements


【解决方案1】:

从技术角度来看:没有。从人类的角度来看:也许;它可以使代码更具可读性和易于理解。

当涉及到各种编译器执行什么样的优化时,我不是很了解,但从理论上讲,if-else 块可能被有效地翻译成更短的版本,因为它们在逻辑上是相同的。

【讨论】:

  • 这取决于。如果setBoolean 抛出异常,那么如果行号可用,它们将可以通过行号来区分。
【解决方案2】:

一个区别是前者很容易设置断点。

但是,前者包含令人不快的冗余,并带有微小的分歧风险。

大多数调试器都支持以值为条件的断点。此替代方案支持对真或假进行中断,而无需冗余。

boolean isEqual = something.equals( something1);
myObj.setBoolean( isEqual );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-22
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多