5

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

4

3 回答 3

12

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

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

于 2009-11-07T09:10:22.087 回答
8

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

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

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

于 2009-11-07T09:09:43.260 回答
3

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

于 2010-08-06T21:45:21.297 回答