我不确定如何构建这个问题,但我很想知道你们对以下情况有何看法以及您更喜欢哪一种。
我们正在使用 winforms 处理客户端-服务器应用程序。我们有一个控件,在填充另一个字段时会自动计算一些字段。所以我们有一个字段货币,当用户填写它时,它将确定另一个字段的自动填充,可能是更多字段。
当用户填写货币字段时,将根据用户引入的字符串从缓存中检索货币对象。如果在缓存中找不到输入的货币,缓存对象将返回空引用。当要求应用层根据货币计算其他字段时,再往下,给定一个空货币,将返回一个空的特定字段。这种方式默认的隐式行为是清除所有字段。这是预期的行为。只是为了更清楚一点,当用户输入“不可用的货币”时,他当然会收到通知,但依赖于输入的货币的字段也应该被清除。这是通过将特定控制值设置为空来完成的。
我称之为显式实现的是验证 Currency 对象是否为空,在这种情况下,依赖字段被显式清除。
我认为后一个版本更清晰,更不容易出错且更可测试。但这意味着一种冗余形式。前一个版本不太清楚,它暗示了应用层的某种行为,而在测试中没有表达出来。也许在较低层测试中,但是当需要修改较低层时,以便在给定零货币的情况下应该返回其他东西,我认为没有动机的测试不会成为阻碍在上层引入错误。
你们有什么感想?