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()