我想问你的问题很广泛,但同时又很具体。首先,我不得不说,我最感兴趣的是适用于 .net 环境的答案。
好吧,我想提高我生产的代码的水平。现在我主要使用 TDD 和静态代码分析来确保我的代码是正确的。最近我听了 Dino Esposito 关于代码契约的演讲,现在我想将它与其他技术结合使用。在听 Dino 时,我还想起了 Debug.Assert()
和 Trace.Assert()
。
具体我会问几个问题:
- 我应该如何编写契约和单元测试以相互补充?
- 我应该在每个方法中使用代码契约还是只在公共(public)方法中使用?
- 我应该阻止使用
Debug.Assert()
吗?什么时候可以使用它们? (例如,请注意 .net 中的不变量仅在公共(public)方法/属性退出时检查。因此,可以通过简单的Assert()
在方法中间进行一些检查吗?) - 能否向我推荐一个正确使用所有这些技术的开源项目,因为一张图片描绘了一千个单词?
最佳答案
您应该从研究(相当不错的)契约(Contract)手册开始。
- 它有一个关于单元测试集成的章节和示例代码。更多信息,如果您点击 Pex 链接。
- 始终在所有公共(public)成员中使用契约(Contract)。对于私有(private)成员:有时。
- 您仍然可以使用 Debug.Assert(),但 Contracts.Assert() 将是更合乎逻辑的选择。
- 示例项目...什么都不知道。但是请查看为 BCL 定义的契约(Contract)。
关于c# - 如何将防御性编程技术结合在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7298750/