【问题标题】:Do you use invariants when you program?你在编程时使用不变量吗?
【发布时间】:2009-11-07 09:06:24
【问题描述】:

我正在学习一门强调不变量使用的中级编程课程。我以前从未使用过它们,它们似乎需要更多的时间来创建。软件工程行业是否强调使用不变量?

【问题讨论】:

  • 不是问题,投票结束
  • 这与 imo 非常相关。 “民意调查”这个词可能会产生误导,这个问题可能应该有标题“我们应该使用不变量吗?”或类似的东西。
  • 您能否详细说明使用它们的含义,例如举个例子?人们可能会在使用您所说的内容时没有意识到这就是您所说的“不变”。

标签: invariants


【解决方案1】:

取决于你问谁 - 我使用不变量只是因为它让生活更轻松。学习不变量就像学习盲打。每次使用不变量时,您都会对代码了解更多。如果您在循环中插入不变量作为注释,它将对读者有很大帮助。我想说的是,使用不变量可以大大降低源代码的创建和维护成本,并使您能够创建更复杂的算法,这些算法仍然是可维护的。

与 OOP 相比,我从未遇到过任何人通过使用不变量来浪费时间。

【讨论】:

    【解决方案2】:

    我不怎么考虑不变量 - 不像前置/后置条件那么多。老实说,我可能应该更多地考虑不变量。

    要考虑的一件事是不可变性 - 如果您使用的是 OO 语言,但尽可能使类型不可变,则无需过多担心不变量:如果状态一开始就有效,它将保持有效。

    听起来你的课程可能有点过分强调不变量......但这确实取决于你在做什么。它们在某些情况下比其他情况更合适。也许您的讲师只是他们的忠实粉丝,在他们真正有用的领域拥有丰富的经验。

    【讨论】:

      【解决方案3】:

      一旦您了解了不变量是什么以及它们的含义,它往往会改变您推理代码的方式。我的意思是,我很少写明确的不变量。但是我经常在我的脑海中对我正在编写的代码中的不变量有所了解。这会导致您编写更简单的代码。在大多数情况下,您最终会得到非常简单的代码,以至于您不需要为不变量编写明确的注释。然而,不了解不变量的人编写的代码要复杂得多:)

      【讨论】:

        猜你喜欢
        • 2013-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-15
        • 2011-02-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多