Java 如果为真、假或两者兼有,如何重构方法以显示值?

Java 如果为真、假或两者兼有,如何重构方法以显示值?,java,refactoring,Java,Refactoring,我得到了这样的方法签名 List<CngCollectionStatement> findCollectionStatements(Boolean posted); 列出findCollectionStatements(布尔过帐); 我们都知道布尔运算,enum会给你一个有限值。例如,布尔值将给出true或false 因此,此方法将返回带有true或false的记录。如果我们想同时显示它们呢?我的意思是显示所有的记录 解决此问题的最佳做法是什么 虽然Set似乎是你想要的,但我觉得

我得到了这样的方法签名

List<CngCollectionStatement> findCollectionStatements(Boolean posted);
列出findCollectionStatements(布尔过帐);
我们都知道布尔运算,enum会给你一个有限值。例如,布尔值将给出true或false

因此,此方法将返回带有true或false的记录。如果我们想同时显示它们呢?我的意思是显示所有的记录

解决此问题的最佳做法是什么

虽然
Set
似乎是你想要的,但我觉得这似乎有点困难

因此:

列出findCollectionStatements(布尔过账,布尔未过账);

作为参数的布尔标志会降低代码的可读性。我建议将您的方法拆分为3个具有更具体名称的单独方法:

findPostedStatements()
findUnpostedStatements()
findAllStatements()

您使用的是
Boolean
,而不是
Boolean
。这意味着您可以传递
null
。但我建议使用
enum
和常量
POSTED
NOT_POSTED
ALL
。我试图避免在这种情况下使用null如果您不想在这里传递
null
(或空可选),您还可以有两个单独的方法(一个过滤,另一个不过滤)。它们仍然可以调度到同一个私有方法,以避免实现中的重复。@这是您推荐的类似
List findUnpostedCollectionStatements()的方法
列出findPostedCollectionStatements()关于重构工作代码的问题与堆栈溢出无关。试试看。如果我使用enum作为参数呢?您的建议是什么?这将是最清楚的,就我个人而言,当至少有另一个API调用可以从中受益时,或者有更多的参数时,我会这样做。或者内部代码也会从中受益(枚举可以有不同于POSTED、UNPOSTED和ALL的公共final字段)。而且
(false,false)
似乎不受欢迎。
findPostedStatements()
findUnpostedStatements()
findAllStatements()