首页 > 解决方案 > 方法有时会返回值,有时不会。如何重构它?

问题描述

界面如下所示:

public interface RunnableAction
{
    Optional<?> run(final Action action, final Context Context);
}

这个接口有很多不同的实现。

问题是:

一些Action 需要返回一些数据,例如ActionReadFromFile,但其中一些无缘无故返回一些东西(在这种情况下我返回Optional.empty()),例如ActionCloseWindow。如何让它好一点?即在需要时返回,当没有任何有意义的东西可以或应该返回时不返回任何东西。这应该通过消除'return Optional.empty()'或'.get()'之类的东西来使代码更清晰。

有什么建议或提示吗?

标签: java

解决方案


我认为更好的解决方案是采用 c++ 风格:D 不要返回值,而是传递一些值并让它在方法中改变。例如,传递所需数据的集合。在那次调用之后,collection 是否为空:

public interface RunnableAction<T>
{
    void run(final Action action, final Context Context, Collection<T> pickedData);
}

推荐阅读