我该如何命名这种方法?

时间:2012-02-01 12:05:07

标签: java naming-conventions

我正在为处理Job实体的服务设计API。我需要检索给定状态的作业。所以,我最终命名我的方法:

List<Job> getJobsByStatus(JobStatus status);

过了一会儿,我意识到我还需要能够检索不属于给定状态的作业。比如,我想要检索所有已关闭的作业。

我一直无法想到这种方法的合适且直观的名称。

我想到了下面但是找不到它们。

List<Job> getJobsAllButStatus(JobStatus status);
List<Job> getJobsNotStatus(JobStatus status);

我无法使用特定状态,例如关闭和命名我的方法getAllButClosedJobs,因为我的方法将是一个能够处理任何状态的通用方法。

PS:我希望这个问题属于SO,虽然技术上不是编程。否则,请随时将其迁移到合适的网站。

4 个答案:

答案 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)

用于检索所有不属于状态的作业。