我正在为处理Job
实体的服务设计API。我需要检索给定状态的作业。所以,我最终命名我的方法:
List<Job> getJobsByStatus(JobStatus status);
过了一会儿,我意识到我还需要能够检索不属于给定状态的作业。比如,我想要检索所有但已关闭的作业。
我一直无法想到这种方法的合适且直观的名称。
我想到了下面但是找不到它们。
List<Job> getJobsAllButStatus(JobStatus status);
List<Job> getJobsNotStatus(JobStatus status);
我无法使用特定状态,例如关闭和命名我的方法getAllButClosedJobs
,因为我的方法将是一个能够处理任何状态的通用方法。
PS:我希望这个问题属于SO,虽然技术上不是编程。否则,请随时将其迁移到合适的网站。
答案 0 :(得分:11)
List<Job> getJobsExcludingStatus(JobStatus status);
甚至
List<Job> getJobsExcluding(JobStatus status);
.......
为了更好地衡量,这就是为什么你不应该使用布尔参数。假设您有这样的界面:
List<Job> getJobs(JobStatus status, boolean exclude);
然后设想代码如下:
List<Job> jobLIst = getJobs(status, false);
有谁想知道它是如何工作的?他们必须深入研究方法,以发现错误是包含或排除或等等的转换。方法实现中的if
语句是隐藏 API中的两个方法 - 一个执行真实案例,另一个执行错误案例。打字不是软件开发的瓶颈 - 这就是思考。
答案 1 :(得分:6)
List<Job> Jobs.allWith(JobStatus... status);
List<Job> Jobs.allBut(JobStatus... status);
流利的api和varargs的组合
答案 2 :(得分:4)
List<Job> getJobsWithoutStatus(JobStatus status)
答案 3 :(得分:1)
尽量保持简单 -
List<Job> getJobsBelongTo(JobStatus status)
用于检索属于状态的所有作业。
List<Job> getJobsNotBelongTo(JobStatus status)
用于检索所有不属于状态的作业。