java 中的参数检查或契约设计 (GWT)。 从哪儿开始?
我正在玩GWT。 我正在寻找基本的论证检查。 我不需要不变量或结果保证。 我对此主题的最佳实践感兴趣。
例如,在 c# 中,我使用以下选项之一:
if (arg1 != null) throw new ArgumentNulException...; // 官方公共 API;
Args.NotNull(arg1); // 自家种植。
Contracts.Requires(arg1 != null); // 内部合约验证。
对我来说最好的起点是什么?
好吧,我现在发现了什么。
I am playing GWT. I am looking for basic argument checking. I do not require invariants or result ensures.
What I am interested about it best practises on the topic.
For example, in c# I use one of this options:
if (arg1 != null) throw new ArgumentNulException....; // Official for public API;
Args.NotNull(arg1); // Home grown.
Contracts.Requires(arg1 != null); // Internal contract validation.
What is the best place for me to start?
Ok, what I found for now.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我通常只是根据 Josh Bloch 的 Effective Java 的建议自己做,所以:
或者
我强烈建议您获取 Effective Java 的副本,如果你还没有拥有它。
I typically just do it myself, per the recommendations of Effective Java by Josh Bloch, so:
or
I'd highly recommend getting a copy of Effective Java if you don't already have it.
根据 Design by Contract 的维基百科页面,使用 Java 实现这种方法的流行工具有:
iContract2 、Contract4J、jContractor、Jcontract、C4J、CodePro Analytix、STclass、Jass 预处理器、OVal 与 AspectJ、Java 建模语言 (JML)、Spring 框架的 SpringContracts 或 Modern Jass、使用 AspectJ 的 Custos、使用 AspectJ 的 JavaDbC、使用扩展的 JavaTESK爪哇。
阅读其中一篇可能是个好主意。
我对其中任何一个都没有个人经验,但 Pragmatic Programmer 对原始 iContract 说得很好,所以这可能是一个很好的起点。
您始终可以尝试使用 Java 内置断言自行完成此操作:
断言表达式1;
或
<代码>
断言表达式1:表达式2;
其中,Expression1 产生布尔值,Expression2 是您测试的值(可选)。 试试看。
According to the wikipedia page of Design by Contract, popular tools for this methodology with Java are:
iContract2, Contract4J, jContractor, Jcontract, C4J, CodePro Analytix, STclass, Jass preprocessor, OVal with AspectJ, Java Modeling Language (JML), SpringContracts for the Spring framework, or Modern Jass, Custos using AspectJ,JavaDbC using AspectJ, JavaTESK using extension of Java.
Reading up on one of those is probably a good idea.
I have no personal experience of any of them but Pragmatic Programmer says good things about the original iContract so that might be a good place to start.
You could always try doing it on your own by using Javas built-in assertions:
assert Expression1;
or
assert Expression1 : Expression2 ;
Where Expression1 results in a boolean and Expression2 is the value your testing (optional). Try it out.
如果您只是在寻找参数检查,那么简单的异常检查应该是最好的解决方案。
异常为您提供了比简单断言更好的捕获处理的解决方案。
在这种情况下,合同设计解决方案绝对是多余的。
If you are just looking for arguments checking, then a simple check with exception should be the best solution.
Exception provides you a better solution for catching an processing than simple assertions.
In that scenario Design-by-Contract solutions are definitively overkill.