【问题标题】:Type name choosing :: An Interface name for functions returning a value类型名称选择 :: 返回值的函数的接口名称
【发布时间】:2019-04-27 14:59:51
【问题描述】:

总是很难选择更好的变量/类型名称。我被困在为界面选择名称

我想根据函数是否返回值对函数进行分类。以下是我做出的一些选择以及我拒绝它们的原因。

ReturningFunction  : a function which doesn't return is hung. I don't want to confuse
OutputtingFunction : a function which outputs to stdout can return void so we can't call it with this name
VoidFunction       : a function which is void?

我试过谷歌搜索,但没有运气。请推荐一些名字:)

【问题讨论】:

  • 函数是否打印到标准输出与它的返回类型无关。
  • @khelwood 这就是我没有选择这个名字的原因:)

标签: java function variables variable-names


【解决方案1】:

您可能希望重用 Java 提供的接口,或者,如果它们不够用,请遵循 java.util.function package 中的命名约定:

类似于VoidFunction:

Consumer<T> 表示接受单个输入参数且不返回结果的操作。

BiConsumer<T,​U> 表示接受两个输入参数且不返回结果的操作。

类似于ReturningFunction:

Function<T,​R> 表示接受一个参数并产生结果的函数。

BiFunction<T,​U,​R> 表示接受两个参数并产生结果的函数。

Supplier<T> 代表结果的提供者。

对于“输出到标准输出”,您可能根本不需要接口。相反,您需要一个如下所示的具体类:

final class SystemOutConsumer<A> implements Consumer<A> {

    private final BiConsumer<PrintStream, A> printStreamABiConsumer;

    public SystemOutConsumer(
            final BiConsumer<PrintStream, A> printStreamABiConsumer) {

        this.printStreamABiConsumer = printStreamABiConsumer;
    }

    public void accept(final A a) {

        printStreamABiConsumer.accept(System.out, a);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-24
    • 1970-01-01
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多