将代码合同部署到生产环境中是不是很糟糕?

Amy*_*Amy 16 .net code-contracts

我正在引用这个答案(强调我的):

看看ContractClass和ContractClassFor属性.这允许您在单独的程序集中编写具有代码契约的类.这使您可以使合同可用于开发工作,不会使代码混乱,也意味着您不必使用实时代码部署合同

  1. 你为什么不想要部署合同?

  2. 从最佳实践角度来看,合同是否严格用于开发和质量控制?

koe*_*tsu 3

  1. 您通常不想在发布版本上部署后置条件合约。这是为了确保您不会让使用您的程序集的人遇到由您负责的错误。我确信还有其他原因,但这是我想到的第一个原因。

  2. 目前,据我所知,关于代码契约还没有单一的最佳实践观点。使用代码契约的方法有多种(在代码契约用户手册中进行了描述),并且每种方法都有其自己的特定指南。

正如我在评论中所述,您引用的答案也不完全正确。

  • 让我说清楚。您不想让使用您的程序集的人或应用程序的最终用户遇到由他们或您负责的错误吗?那么解决方案就是关闭合约,让错误波及整个系统,并可能导致底层数据损坏?可怕的!就我个人而言,我会在发布后的前几个月保留完整的合同,如果性能是一个问题,也许稍后会禁用不太重要的合同。隐藏代码中的问题并不能让它们消失。 (6认同)
  • 我明白你的观点,但我的观点是,在这种情况下,这不是先决条件。如果您收到 ContractException,则说明开发人员犯了错误。如果存在应该妥善处理的问题,那么这些只是例外情况,您应该对这些情况使用正常异常。这些特殊情况被视为“符合规范”。违反合同行为被视为不符合规范。但这当然是我的意见。 (2认同)
  • 请参阅 http://devjourney.com/blog/code-contracts-part-6-runtime-support/ ,这详细描述了您何时想要在发布版本中启用合约,以及启用哪种合约。 (2认同)