IF 块中应放置什么内容,ELSE 块中应放置什么内容?

2023-11-23

这是一个小风格问题,但是您添加到代码中的每一点可读性都很重要。

所以如果你有:

if (condition) then
{
   // do stuff
}
else
{
   // do other stuff
}

你如何决定是这样更好,还是这样:

   if (!condition) then
   {
     // do other stuff
   {
   else
   {
     // do stuff
   }

我的启发是:

  1. 保持病情积极(少 读时心算)
  2. 将最常见的路径放入 第一个区块

我更喜欢把最常见的路径放在第一位,并且我坚信嵌套减少,所以只要有可能,我就会中断、继续或返回而不是 else。我通常更喜欢针对积极条件进行测试,或者将消极条件反转[并命名]为积极条件。

if (condition)
    return;

DoSomething();

我发现,通过大幅减少 else 的使用,我的代码更具可读性和可维护性,并且当我必须使用 else 时,它​​几乎总是一个更结构化的 switch 语句的绝佳候选者。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IF 块中应放置什么内容,ELSE 块中应放置什么内容? 的相关文章

  • 是否有任何参考资料/MSDN 教程来显示对“if (!condition)”或“if (condition == false)”的支持? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • JavaScript:扩展 Array.prototype 有什么危险?

    谷歌 JavaScript 风格指南建议不要延长Array prototype https google github io styleguide jsguide html disallowed features modifying bui
  • 将 Python 代码转换为 PEP8 兼容的工具

    我知道有一些工具可以验证您的 Python 代码是否符合 PEP8 例如两者都有在线服务 http pep8online com and 一个Python模块 https github com jcrocholl pep8 但是 我找不到可
  • Objective-C 类前缀 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 您对命名 ObjC 类有何偏好 我有点不确定对此最合理的方法是什么 所以很高兴听到一些其他意见 Apple 建议为 cocoa 类添加前缀 因为
  • Java中String(String)构造函数的使用[重复]

    这个问题在这里已经有答案了 我读过的文章和书籍使用String s new String 应该一直避免 我明白为什么会这样 但是使用 String String 构造函数有什么用处吗 我认为不存在 也没有看到任何其他证据 但我想知道 SO
  • XML 元素是否有标准的命名约定? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 XML 文档是否有任何标准 事实上的标准或其他标准 例如 哪种是编写标签的 最佳 方式
  • Python 类中的属性初始化/声明:将它们放在哪里?

    我想知道在 Python 中初始化对象属性的最佳实践是什么 在类的主体中还是在 init 功能 i e class A object foo None vs class A object def init self self foo Non
  • 什么时候适合使用分号?

    我知道 JavaScript 以及 TypeScript 在很多情况下支持省略分号 尽管如此 我想添加分号以使其明确 如建议的那样TypeScript 深入探究 https basarat gitbooks io typescript co
  • 代码与日志的比率? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 理想的代码与日志记录比率是多少 我不习惯编写日志 因为我开发的大多数应用程序都没有太多日志记录 最近 虽然我换了工作 但我注意到您看不到调用 l
  • 类的operator()或将函数绑定为函子?

    有两种方法可以创建函子 保存状态的函数 绑定一个函数并定义一个状态 bind f 1 state 双g 双x 双状态 返回x 状态 函数 f 绑定 g 1 状态 use 运算符和类 struct f double state f doubl
  • 枚举是单数还是复数?

    枚举时使用单数还是复数 我认为声明中使用复数最有意义 enum Weekdays Monday Tuesday Wednesday Thursday Friday Saturday Sunday 但我认为在使用类型时使用单数更有意义 例如
  • 迭代还是使用计数器,这就是问题

    每当有人开始使用 STL 并且他们有一个向量时 您通常会看到 vector
  • 连接空字符串来进行字符串转换真的那么糟糕吗?

    假设我有两个char变量 稍后我想将它们连接成一个字符串 我就是这样做的 char c1 c2 String s c1 c2 我见过有人说 trick 是 丑陋的 等等 你应该使用String valueOf or Character to
  • int i 与 int index 等哪个更好? [复制]

    这个问题在这里已经有答案了 可能的重复 名为 i 的变量是不可接受的吗 https stackoverflow com questions 130775 is a variable named i unacceptable 循环变量的理想变
  • 可选回调的 JavaScript 样式

    我有一些函数偶尔 并非总是 会收到回调并运行它 检查回调是否已定义 函数是一种好的风格还是有更好的方法 Example function save callback do stuff if typeof callback undefined
  • 为什么大多数 C 开发人员使用 Define 而不是 const? [复制]

    这个问题在这里已经有答案了 在许多程序中 define与常量具有相同的用途 例如 define FIELD WIDTH 10 const int fieldWidth 10 我通常认为第一种形式优于另一种形式 它依赖于预处理器来处理基本上是
  • 使用 NullPointerException 来测试 null 是一种不好的风格吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我有一些遵循以下模式的代码 return a b c d e 现在因为这些方法中的每一种都可以返回null 通常会对此进行测试 if a nul
  • Python 中的参数命名约定

    对于形式参数密切相关的函数 例如 def add two numbers n1 n2 return n1 n2 def multiply two numbers n1 n2 return n1 n2 如上所示 为两个函数中的参数指定相同的名
  • 迭代比线性代码慢吗?哪一个更可取?

    最近几天我脑子里一直有一个问题 在用 ruby 编写代码时 线性代码是否比迭代更快 更好 让我举个例子 有一个用于相同功能的代码块以两种不同的方式编写 Way 1 dog cat tiger each do pet name puts I
  • 使用“for”循环迭代 C++ Vector

    我是 C 语言的新手 我已经开始使用向量 并且注意到在我看到的所有代码中通过索引迭代向量 for循环总是基于向量的 在 Java 中 我可能会用 ArrayList 做这样的事情 for int i 0 i lt vector size i

随机推荐