在Spring MVC应用程序中,服务层使用什么命名约定?[关闭]


问题内容

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。

7年前关闭。

我一直在为spring应用程序中的服务层找出一个好的命名约定。对于服务层中的每个类,我首先编写它应实现的接口,然后再编写实际的类。因此,例如,我有以下界面:

public interface UserAccountManager{
   public void registerUser(UserAccount newUserAccount);
   public void resetPassword(UserAccount userAccount);
...
}

然后是实现类…

这里让我感到困扰的是UserAccountManager是实现类的好名字,因此我被迫给它一个愚蠢的名字,例如SimpleUserAccountManager或UserAccountDbManager。到目前为止,您使用了哪些约定?将实现类放在不同的包中并为它们提供与接口相同的名称是个好主意吗?另外,您对使用以Manager结尾的名称而不是以Service结尾的名称有何想法?


问题答案:

Spring本身为接口提供通用名称,然后根据实现的细节为类命名。这是一个想到的例子:

interface: Controller
abstract classes: AbstractController, AbstractCommandController, 
                  SimpleFormController, MultiActionController

我不认为像SimpleUserAccountManager或UserAccountDbManager这样的名称是愚蠢的,因为它们传达了有关管理器/服务实现的一些信息。

我发现愚蠢的是在实现类上添加“ Impl”后缀的通用约定:

my/package/UserAccountManager
my/package/impl/UserAccountManagerImpl

有些人喜欢这个。