我想问你的问题很广泛,但同时它非常具体。首先,我必须说,我最感兴趣的是适用于.net环境的答案。
好吧,我想提高我生成的代码级别。现在我主要使用TDD和静态代码分析来确保我的代码是正确的。最近我听了Dino Esposito关于代码合同的演讲,现在我想将它与其他技术结合使用。在听Dino的同时,我还回忆了Debug.Assert()
和Trace.Assert()
。
具体来说,我会问几个问题:
Debug.Assert()
吗?什么时候可以使用它们? (例如,请注意.net中的不变量仅在公共方法/属性出口上进行检查。那么,通过简单的Assert()
在方法中间进行一些检查是否可以?)答案 0 :(得分:4)
您应该首先研究合同的(相当不错的)手册。
答案 1 :(得分:4)
我会完全接受预览博客中的合同,并阅读更长的pdf文档。
合同不仅适用于公共职能。最重要的是它为编译器提供了一种推理代码的方法。因此,请在适当的时候在所有功能中使用它。这给你带来了最大的好处。只在公共函数中使用它就像是说你只测试顶级函数。错了。
你的函数测试用例会在合同前/后调用函数测试函数,并且不变调用会做他们的事情。
明确3种使用方案,哪种方案适用于您的代码及其问题。理想情况下,您可以在生产代码中运行它们,然后根据性能测试进行缩减。
确保您生成的文档包含合同,这是一个很好的好处。
我也喜欢DevExpress CodeRush和Refactor!专业工具。它们具有针对合同的特定重构,例如几次点击以将输入参数转换为需求合同等。此外,它们还有一些很好的代码分析,可以提高代码质量。
您可以在此处查看包含合同的代码: https://searchcode.com/codesearch/view/14318515/
至于整个最佳实践辣酱玉米饼馅在一个项目中。好吧,我在看微软。 TSK。
Henk在你的其他问题上做得很好。