问题标签 [preconditions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
121 浏览

java - 带前提条件的 Java 调试

使用 Chromium 代码库时,我已经习惯了CHECK(condition);,DCHECK(contidtion)NOTREACHED;. 它们向代码引入断言(通常是先决条件),并允许在日志中使用一些信息终止程序,在调试构建中DCHECK,并且NOTREACHED还会停止调试器来调查案例。第一个仅在发布模式下处于活动状态,后两个仅在调试中处于活动状态 - 当“不活动”时,它们将被空宏替换并且不会造成任何开销。

Java中是否有一些库允许这样的事情?我知道我可以根据配置交换配置创建一些静态方法/对象,但我看不到避免产生开销的方法。此外,我不想重新发明轮子。

0 投票
2 回答
78 浏览

java - 为什么 Google Precondition Library 中的 Checkers 采用对象而不是字符串

为什么 Google Precondition 库中的 check* 方法采用对象而不是字符串?我可以看到该对象被称为 String.valueOf() 。我认为这种设计是由于没有代表客户做出任何假设。但我想不出一个合理的情况,即客户端将使用字符串以外的任何东西来调用它。

我猜客户可能会传递一个实现了 toString() 方法的对象。但是你能举一个真实的例子来说明如何使用它/你一直在使用它吗?

0 投票
1 回答
1549 浏览

yaml - 使用 yaml 在 liquibase 的前提条件下增加 dbms

liquibase 的前置条件文档中,我们可以看到以下示例:

当尝试使用 yaml 重新创建相同的规则时,它不起作用。

我也尝试过类似的东西:

我知道可以使用:

我总是收到如下错误:

如何在前置条件中使用多个 dbms?

0 投票
1 回答
1357 浏览

scala - Scalatest 假设数据库在每个测试中都可用

我的许多测试都依赖于数据库。在运行测试用例之前,我使用以下命令检查连接:

当我将它添加到每个测试用例时,!!! CANCELED !!!输出中会显示正确的消息和正确的消息。

当我将它添加到beforeEach方法中时:

我所能看到的只是Exception encountered when attempting to run a suite with class name*** ABORTED ***(在assume电话线上)。

我真的需要在每个测试用例中添加这个假设吗?

0 投票
2 回答
1673 浏览

java - 在android中验证函数先决条件

通常在编写公共方法时,我会进行一些错误检查,例如

在android编程中,标准方法是什么?我注意到当一个片段崩溃时,模拟器会转到前一个片段,所以从向用户显示的行为来看,我猜它是可以的。但是处理异常/错误情况的最佳方法是什么?

0 投票
2 回答
1125 浏览

clojure - 在不运行函数的情况下检查 Clojure 前置条件?

我有一个功能可以完成一些(可能很长)工作(defn workwork [x] ...),还有一些其他功能可以检查调用是否会提前成功(defn workwork-precondition-1 [x] ...)

每次workwork调用(例如使用:pre)时都应评估前置条件函数。前置条件函数也应该被收集(和:ed)在一个函数中,并直接提供给客户端代码(例如禁用按钮)。

在避免代码重复的同时,在 Clojure 中解决这个问题的惯用方法是什么?

特别是,有没有办法在不运行函数体的情况下评估函数的先决条件?

0 投票
1 回答
205 浏览

c# - 将先决条件分组到一种可以接受的方法中以保持 DRY 吗?

在为具有相似参数的不同函数编写前提条件时,我想将断言或异常分组到静态方法中,而不是显式地写出来。例如,而不是

我宁愿写

这感觉更自然,并有助于减少我需要编写的代码(甚至可能减少我的断言中的错误数量!)但它似乎违背了先决条件应该有助于记录方法的确切意图的想法。

这是一种常见的反模式,还是有任何重要的理由不这样做?

另外,如果我使用了异常,答案会有所不同吗?

0 投票
7 回答
6431 浏览

java - 为 notNull 检查抛出 IllegalArgumentException 的前提条件库

您是否知道Apache Commons ValidateGuava Preconditions的一些不错的替代方法,在检查对象是否不为空Spring Assert除外)时会抛出 IllegalArgumentException 而不是 NullPointerException ?


我知道Javadocs说:

应用程序应抛出此类 [NullPointerException] 的实例,以指示空对象的其他非法用途。

尽管如此,我只是不喜欢它。对我来说,NPE 总是意味着我只是忘记在某处保护空引用。我的眼睛受过如此训练,我可以发现它以每秒几页的速度浏览日志,如果我这样做了,我的脑海中总是会启用错误警报。因此,将它扔到我期望 IllegalArgumentException 的地方会让我很困惑。

假设我有一个 bean:

和服务方法:

在某些情况下,一个人没有电话可能没问题(我奶奶没有任何电话)。但是如果你想打电话给这样的人,对我来说,它是调用带有IllegalArgument传递的call方法。查看层次结构 - NullPointerException 甚至不是 IllegalArgumentException 的子类。它基本上告诉您-您再次尝试在 null 引用上调用 getter

此外,已经进行了讨论,我完全支持这个很好的答案。所以我的问题是——我需要做这样丑陋的事情吗:

以我的方式进行,或者是否有一个库会抛出 IllegalArgumentException 进行 notNull 检查?

0 投票
1 回答
107 浏览

preconditions - 如何设置自定义椭圆约束的优先级

我有一个自定义注释约束,但我希望仅在另一个约束有效时才检查它。例如:

如果 propertyA 为 null ,我不希望检查 propertyB 上的“@Digits”。

我该如何解决这个问题?谢谢。

0 投票
1 回答
2013 浏览

iis - 捕获部分 URL 以在 IIS 中重写模块的出站规则中使用

有没有办法在出站规则中捕获部分 url 以用作重写的值?

现在,我正在使用先决条件,其中我有一个针对 {REQUEST_URI} 的模式的输入。我想在使用此前提条件的出站规则中使用请求 URI 中的捕获组。我试过 {C:1} 但这没有用。

前提:

出站规则:

其中 {C:1} 将是前置条件“myapp(.*)”中的捕获组

因此,它会从 http://myapp40.com 重写响应中的链接,以类似于 40/originalrelativelink

谢谢!