Java 我应该如何命名这个方法?

Java 我应该如何命名这个方法?,java,naming-conventions,Java,Naming Conventions,我正在为处理作业实体的服务设计API。我需要检索给定状态的作业。因此,我最终将我的方法命名为: List<Job> getJobsByStatus(JobStatus status); 列出getJobsByStatus(作业状态); 一段时间后,我意识到我还需要能够检索不属于给定状态的工作。比方说,我想检索所有但已关闭的作业 我一直无法为这种方法想出一个合适且直观的名称 我想到了下面这些,但并不完全正确 List<Job> getJobsAllButStatus(J

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

List<Job> getJobsByStatus(JobStatus status);
列出getJobsByStatus(作业状态);
一段时间后,我意识到我还需要能够检索不属于给定状态的工作。比方说,我想检索所有但已关闭的作业

我一直无法为这种方法想出一个合适且直观的名称

我想到了下面这些,但并不完全正确

List<Job> getJobsAllButStatus(JobStatus status);
List<Job> getJobsNotStatus(JobStatus status);
List getJobsAllButStatus(作业状态状态);
列出getJobsNotStatus(作业状态);
我不能使用特定的状态,例如closed and christen my method
getAllButClosedJobs
,因为我的方法将是一个能够处理任何状态的通用方法

PS:我希望这个问题属于SO,尽管它不是技术上的编程。否则,请随意将其迁移到合适的站点。

列出GetJobseCludingStatus(作业状态状态);
List<Job> getJobsExcludingStatus(JobStatus status);
甚至

List<Job> getJobsExcluding(JobStatus status);
List getjobsecluding(作业状态);

这就是为什么不应该使用布尔参数的原因。假设您有这样一个界面:

List<Job> getJobs(JobStatus status, boolean exclude);
List<Job> jobLIst = getJobs(status, false);
列出getJobs(JobStatus状态,布尔排除);
然后想象这样的代码:

List<Job> getJobs(JobStatus status, boolean exclude);
List<Job> jobLIst = getJobs(status, false);
List jobLIst=getJobs(状态,false);
怎么会有人知道这是怎么回事?他们必须深入研究这个方法,才能发现false是一个包含或排除的开关。方法实现中的
if
语句是在API中隐藏了两个方法,一个是真的,另一个是假的。键入不是软件开发的瓶颈,而是思维方式。

列出getJobsWithoutStatus(JobStatus状态)
List<Job> getJobsWithoutStatus(JobStatus status)
列出作业。所有作业(作业状态…状态);
列出作业.allBut(作业状态…状态);

fluent api和varargs的结合

尽量保持简单-

List<Job> getJobsBelongTo(JobStatus status)
List getJobsBelongTo(作业状态)
用于检索属于状态的所有作业

List<Job> getJobsNotBelongTo(JobStatus status)
List getJobsNotBelongTo(作业状态)

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

我倾向于认为此问题应以“非建设性”结束(对于任何堆栈交换站点)。关于非建设性结束问题的提示如下:“此问题可能会征求意见、辩论、争论、投票或扩展讨论。”添加布尔参数“排除”是否更好,以满足此目的。如果为true,则返回不属于该状态的作业,反之亦然。只是一个建议。非关闭作为作业状态有什么错?@KurtDuBois没有错,但是如果我需要检索
未关闭的作业
未激活的作业
未存档的作业
等等,我将不得不创建许多不同的方法。编程就是为了清晰地沟通。一个命名不好的方法很容易模糊其他编写良好的代码的含义。可能是
allWhere(JobStatus JobStatus)
allWhereNot(JobStatus JobStatus)
可能是
getjobsbelongto
getjobsnotbelongto
,以获得更好的语法。同意,但它可能会增加方法名的长度,而且在编程中,语法并不重要。它可能很长,这不是问题,但语法确实很重要。拼写错误/语法错误的方法会立即降低我们创建的API的直观性。我选择使用
getjobscludingstatus
。感谢。+1“类型不是软件开发中的瓶颈,而是思维。”+1用于更改其行为的布尔方法参数应使用枚举进行强类型化。
List<Job> getJobsNotBelongTo(JobStatus status)