gpt4 book ai didi

java - Service s = new ServiceImpl() - 为什么要这样做?

转载 作者:行者123 更新时间:2023-12-02 12:00:36 26 4
gpt4 key购买 nike

我刚刚读了这篇文章SERVICE S = NEW SERVICEIMPL() - WHY YOU ARE DOING THAT?

想知道你对它的看法..想知道除了它之外你还会给它起什么名字暗示?

最佳答案

Impl 后缀是命名 anti-pattern 。它表示开发人员缺乏描述性命名的努力。这是 IService 接口(interface)命名的另一面 anti-pattern以及。这两种做法都带有懒惰或糟糕的设计选择或两者兼而有之的味道。两者都是代码异味,应该提醒开发人员有问题。

代码中显示interface Serviceclass MyService Implements Service这一事实应该足够了,其他的都是 tautology 。对于当今先进的 Java IDE 来说更是如此。

如果您有 Service 接口(interface),请以描述性方式命名实现。 Service 是通用的,这对于接口(interface)来说是很好的。 HttpServiceAuthenticationService 是特定的,对于类来说是好的。在这两种情况下,大部分都是 self 记录的。

如果您无法为接口(interface)和类提供唯一的描述性名称,那么您就做错了。

Mocking 参数中,假设真正的类位于 com.company.app.service 中。模拟实现应该位于它们自己的 com.company.app.service.mock 包中,可能与测试类位于不同的目录结构中,就像在 Maven 中一样,这将允许它们具有与非 Mock 类,并且仍然记录它们是仅用于测试的 Mock,不会污染生产代码的 namespace ,并且很容易在部署中不包含该代码。

关于java - Service s = new ServiceImpl() - 为什么要这样做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5095955/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com