java - 过滤时给null一个意思,加上两个 boolean 值表示三元balue好不好?

标签 java

<分区>

我的一位同事决定像这样声明一些 API 代码:

public interface Filter<T> {
    /**
     * Test whether the given input is valid.
     * @param input the input
     * @return null for neutral, {@code Boolean.TRUE} for accepted and {@code Boolean.FALSE} for rejected.
     */
    Boolean apply(T input);
}

这个想法在 IRC 上引发了一场 war 。虽然有些人提倡 Boolean 方法,但其他人认为这是不好的做法,应该使用三个元素的枚举来表示独立状态,如下所示:

public interface Filter<T> {
    Result apply(T input);
    enum Result {
        ACCEPT, UNKNOWN, DENIED;
    }
}

那么,就性能、可读性、可维护性,或者,如果真的很重要,更少的代码,生产中的最佳实践是什么?

编辑:这里,接受、未知(或中性)、拒绝(或拒绝)是@erickson 的意思。如果你对 gpt 感到困惑,请参阅他的答案,如果你感到困惑。

针对“搁置”,我澄清我的问题主要涉及: * 这有明确的约定吗?* 这是接受答案的原因

最佳答案

principle of least astonishement建议仅对 true/false 使用 boolean 值,对其他任何内容使用 enum,例如 { Trueish, Falsish, Undecideish }。此外,与 Boolean 不同,您实际上可以记录 enum 的值,以便立即了解 MyEnum.Truieish 在您的应用程序的上下文。

关于java - 过滤时给null一个意思,加上两个 boolean 值表示三元balue好不好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35510251/

相关文章:

java - cypher 上的索引不会在事务中更新

java - JSTL,无法填充组合框

java - 带有 spring-security 的 OAuth2 - 通过 HTTP 方法限制 REST 访问

java - 将图像添加到android ListView

java - 防止 ProGuard 混淆类成员名称

java - 当 java 进程终止时捕获

java - 使用PID Controller 来管理程序中的资源

java - 在 Java 中,如何在每次进入或退出给定对象的监视器时记录消息?

java - 静态变量设置为 null 可用于 GC?

java - 如何在 Play 2.5.x (Scala) 中禁用弱密码和客户端重新协商