【发布时间】:2013-03-13 13:32:33
【问题描述】:
我在 StackOverflow 上看到了thecanonical 类/接口命名问题,并阅读了很多关于该主题的其他opinions,但我有一个相关的问题我不确定是否在任何一个中得到回答那些地方。我倾向于讨厌 IInterface 或 ClassImpl 命名约定,因为它们是不必要的(考虑到现代 IDE),使代码更难阅读,并且在许多情况下,需要使用其中一种命名模式似乎意味着不正确的设计。
但是,我经常遇到这样一种情况,即我有一个想要作为 API 的一部分公开的接口(通常在一个单独的包中),然后我创建了一个接口的抽象实现以包含一些常见的功能我希望大多数(但不是全部)具体实现都来自于。例如:
public interface Foo {
public String getBar();
}
public abstract class BasicFoo implements Bar {
private String bar;
@Override
public String getBar() {
return bar;
}
}
在实践中,我倾向于在实现名称前加上 Basic 前缀,但我所做的基本上正是某些人使用 Impl 后缀的目的:提供基本/默认实现。我可以尝试一个暗示它是由内存存储(例如 Bar)支持的 Foo 的名称,但它总是捕获 BasicFoo 中的所有功能。我也不认为我应该抛弃接口并直接公开实现,因为接口提供了额外的灵活性和解耦。
想更好的方法来处理这种情况,还是逻辑命名约定?
【问题讨论】:
标签: api interface naming-conventions naming