java 中的参数检查或契约设计 (GWT)。 从哪儿开始?

发布于 2024-07-21 04:48:45 字数 611 浏览 10 评论 0原文

我正在玩GWT。 我正在寻找基本的论证检查。 我不需要不变量或结果保证。 我对此主题的最佳实践感兴趣。

例如,在 c# 中,我使用以下选项之一:

  1. if (arg1 != null) throw new ArgumentNulException...; // 官方公共 API;
  2. Args.NotNull(arg1); // 自家种植。
  3. Contracts.Requires(arg1 != null); // 内部合约验证。

对我来说最好的起点是什么?

好吧,我现在发现了什么。

  1. 验证方法参数
  2. 使用断言编程

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:

  1. if (arg1 != null) throw new ArgumentNulException....; // Official for public API;
  2. Args.NotNull(arg1); // Home grown.
  3. Contracts.Requires(arg1 != null); // Internal contract validation.

What is the best place for me to start?

Ok, what I found for now.

  1. Validate method arguments
  2. Programming With Assertions

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

倚栏听风 2024-07-28 04:48:45

我通常只是根据 Josh Bloch 的 Effective Java 的建议自己做,所以:

if (arg == null) throw new NullPointerException("arg cannot be null");

或者

if (arg < 0) throw new IllegalArgumentException("arg must be positive");

我强烈建议您获取 Effective Java 的副本,如果你还没有拥有它。

I typically just do it myself, per the recommendations of Effective Java by Josh Bloch, so:

if (arg == null) throw new NullPointerException("arg cannot be null");

or

if (arg < 0) throw new IllegalArgumentException("arg must be positive");

I'd highly recommend getting a copy of Effective Java if you don't already have it.

你好,陌生人 2024-07-28 04:48:45

根据 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.

゛时过境迁 2024-07-28 04:48:45

如果您只是在寻找参数检查,那么简单的异常检查应该是最好的解决方案。

异常为您提供了比简单断言更好的捕获处理的解决方案。

在这种情况下,合同设计解决方案绝对是多余的。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文