【发布时间】:2011-04-25 21:58:19
【问题描述】:
我正在尝试掌握代码合同,因为我认为这个概念在生成更健壮的代码方面很有希望,但到目前为止,我仍然不清楚或看起来很麻烦。
我目前最大的问题之一是如何正确处理表单控件。在静态检查选项中选择“隐式非空义务”后,我会收到一条消息,为我访问的当前表单中的每个控件推荐 Contract.Requires([control] != null) 规则;这有点毫无意义,因为我知道控件将始终存在,因为它们是在表单的 InitializeComponent() 方法中创建的。
我知道静态检查器无法知道这一点,但必须有办法摆脱这些消息(如果只是因为它们使列表变得混乱)——至少我希望如此——除了明显添加所有这些推荐的检查(或者更确切地说是Contract.Assume() 调用),然后会在有效(逻辑上)冗余的同时使我的代码混乱。
处理这个问题的正确方法是什么?为所有要求它们始终为非空的控件添加不变规则?我知道的对象成员会一直在那里,比如ComboBox.Items 呢?
感谢您分享对此的任何见解。
【问题讨论】:
标签: .net winforms code-contracts