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()
方法。
我有一项服务,某些属性必须 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()
方法。