Java 方法命名约定和重载

Java method naming conventions and overloading

我有一项服务,某些属性必须 return 人。我看到了两种命名这些方法的策略:

第一个:

getPersonById(int id)
getPersonByBirthDate(Date date)
getPersonByBirthDateAndSex(Date date,Sex sex)
getPersonByNameAndSex(String name,Sex sex)
getPersonByBirthDateAndNameAndSex(Date date,String name,Sex sex)
etc..

或应用重载规则执行以下操作:

getPerson(int id)
getPerson(Date date)
getPerson(Date date,Sex sex)
getPerson(String name,Sex sex)
getPerson(Date date,String name,Sex sex)

根据 java 命名约定,哪个是正确的?

重载总是更好。 许多基于 java 的已知框架都遵循这种方法。 另外,重载的主要概念是因为你提到的条件。

重载方法简化了开发人员的可读性,因为不必记住单独的名称。 此外,eclipse 的 Ctrl + Space 功能总是会提示人们想要使用哪种方法。

独立于重载问题,您的设计遭受组合 API 爆炸:您开始为搜索条件的所有可能组合引入方法。另一种方法是引入一个收集标准的构建器,最后 returns 这个人。

示例:

 queryPerson().byId(5).run();  
 queryPerson().byName("John").bySex(Sex.MALE).run();
 queryPerson().bySex(Sex.FEMALE).run();

服务 API 现在只有一个很好的 queryPerson() 方法。