【发布时间】:2011-05-12 11:18:37
【问题描述】:
我目前正在为一个大学项目使用 C# 开发一个小型 AI 框架(遗传算法/神经网络)。
我首先关心的是开发一个可重用的框架,所以我将所有东西都设计成非常模块化的。我知道我为此付出了代价(性能),但我觉得我得到的比失去的要多(最好让代码慢一倍而不是失去两倍的时间,然后试图找到不可能发现错误并浪费大量时间尝试添加难以在单一代码块中引入的新内容)。
基本上,我想对我的代码的不同部分、断言进行大量检查。检查运行方法 XI 时是否确实处于正确状态等。这些断言在开发时很有用,但我希望它们远离发布代码(也就是说,当我决定要离开时)为了得到我的最终研究结果而工作了一夜。
我可以看到几种方法来实现这一点:
- System.Diagonists.Assert 系列方法。
- 代码合同
- 拥有 if (x) 然后抛出 InvalidStateException() 被 #if DEBUG / #endif 包围
你会怎么做?为什么?
我也知道单元测试(我正在使用它们),但我也想对代码进行某种断言。
【问题讨论】:
标签: c# .net algorithm oop code-contracts