我想知道是否使用腰带和大括号(吊杆)方法进行编程 - 特别是数据验证 - 是不是很好的做法.这来自以下示例.
我正在创建一个表单,并且我将监听器添加到所有字段,这意味着OK只有在表单中的所有字段都具有有效值时才启用该按钮.然后我编写了OK单击按钮时运行的代码.
我悲观的一面决定腰带和大括号从不伤害任何人,如果我的形式逻辑中存在错误,再次验证表格也不会有什么坏处.
但是如果验证失败,我不知道该放什么.如果我做这样的事情:
if (! form.isValid()) {
displayErrorMessage();
}
Run Code Online (Sandbox Code Playgroud)
然后我必须创建代码来显示永远不会显示的错误消息.任何在将来维护此代码的人都会担心并且可能会在理论上对此进行不必要的对话.我想要的最后一件事是有人想知道为什么永远不会显示这个特定的对话框.
规模另一端的选项是:
if (! form.isValid()) {
throw new RuntimeException("This should never happen!");
}
Run Code Online (Sandbox Code Playgroud)
坦率地说,即使打字,我也觉得很脏,但也许有一个很好的理由使用它我错过了.
最后我最终得到了:
assert form.isValid();
Run Code Online (Sandbox Code Playgroud)
然而,它的缺点是它并不是真正的腰带和括号,因为在运行时没有括号,所以如果代码中有一个错误,我的表格的裤子仍然会掉下来.
所以也许我根本不应该进行额外的验证,但仍有一部分人认为它不会受到伤害.
我有兴趣听听你在类似情况下做了什么.
(编辑:问题是询问什么是确保表单返回有效数据的最佳方法.假设表单的输出在数据库结束之前再次验证,依此类推.)
我没有做很多UI工作,但最近我发现自己做了非常相似的事情.我离开了两个腰带(在每个控件发生变化时验证它)和大括号(在OK_Click上检查再次有效).
我留下了两个,因为如果将来某些更改错过了控件上的验证,则单击"确定"按钮时会捕获它.
在我的脑海中,对OK的检查是真正的验证,每个控件验证是糖,只是增强了用户体验.
那说我没有考虑太多,我不经常做UI工作.
根据我的经验,"以防万一"代码有时是懒惰编程的症状.即,我找到了一个基本上有效的解决方案,我不确定它是否会一直有效,所以我会抛出一些双重检查代码"以防万一." 如果你没有向月球发射火箭飞船,这种类型的东西相对无害,但仍然是非常糟糕的做法.
对于我的(非火箭飞船)业务应用程序,我总是输入错误日志记录和友好消息,并尝试一直考虑问题,以便用户尽可能不经常看到友好消息.如果有问题,我可以更好地修复它,因为我的代码不会被各种不必要的检查混乱.
| 归档时间: |
|
| 查看次数: |
1116 次 |
| 最近记录: |