gpt4 book ai didi

assertions - Belt and Braces 编程是好的实践还是仅仅引入了不必要的复杂性?

转载 作者:行者123 更新时间:2023-12-03 22:22:51 26 4
gpt4 key购买 nike

我想知道是否使用 Belt and Braces (Suspenders)编程方法——尤其是数据验证——是否是好的做法。这来自以下示例。

我正在创建一个表单,并将监听器添加到所有字段中,这意味着 OK按钮仅在表单中的所有字段都具有有效值时启用。然后我正在编写在 OK 时运行的代码。按钮被点击。

我悲观的一面决定,Belt and Braces 永远不会伤害任何人,如果我的表单逻辑中存在错误,再次验证表单也不会受到伤害。

但后来我不知道如果验证失败该输入什么。如果我做这样的事情:

if (! form.isValid()) {
displayErrorMessage();
}

然后我必须创建代码来显示不应显示的错误消息。将来维护此代码的任何人都会担心并且可能会被这个理论上不必要的对话弄糊涂。我最不想要的是有人想知道为什么这个特定的对话框永远不会显示。

规模另一端的一个选项是:
if (! form.isValid()) {
throw new RuntimeException("This should never happen!");
}

坦率地说,即使打字我也觉得很脏,但也许我错过了使用它的一个很好的理由。

所以最后我得到了:
assert form.isValid();

然而,它的缺点是它不是真正的腰带和大括号,因为大括号在运行时不在那里,所以如果代码中有错误,我的表单的裤子仍然会掉下来。

所以也许我根本不应该有额外的验证,但我仍然有一部分认为它不会受到伤害。

我很想听听您在类似情况下的做法。

( 编辑 :问题是问什么是确保表单返回有效数据的最佳方法。假设表单的输出在它最终进入数据库之前再次验证,依此类推。)

最佳答案

我不做太多 UI 工作,但最近我发现自己做了一些非常相似的事情。
我离开了皮带(验证每个控件的变化)和支架(检查在 OK_Click 上再次有效)。

我保留了两者的基础是如果将来的某些更改错过了控件的验证,则单击“确定”按钮时会被捕获。

在我的脑海中,OK 的检查结果是 真实验证,而每个控件的验证只是增强用户体验的糖。

这就是说我没有想太多,我也不经常做 UI 工作。

关于assertions - Belt and Braces 编程是好的实践还是仅仅引入了不必要的复杂性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/767952/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com