我目前正在重构一些代码以使其更易于测试。 具体来说,我正在提取几个类的接口,以便轻松创建测试双精度。
我想保持公共接口与此代码相同,在原始类之后命名接口。
然而,这给我留下了什么称为原始类的问题。
我正在使用C ++。
如果我的界面是:
class ServiceClient;
我应该怎样称呼这种情况,我想出了一些我不相信的选择:
class ConcreteServiceClient;
class ServiceClientImpl;
class StandardServiceClient;
class BasicServiceClient;
人们使用哪些约定?
答案 0 :(得分:6)
我会更改接口类的名称。
class ServiceClientInterface {};
然后将具体实现放在seprate命名空间中:
namespace MyService
{
class Client: public ServiceClientInterface {};
}
namespace MyServiceTest
{
class TestClient: public ServiceClientInterface {};
}
或者完全不同的东西 PS。我是全名。我不喜欢简短的'我'是界面的东西。你的口味可能会有所不同。
答案 1 :(得分:1)
通常,我为pimpl idiom保留“Impl”。我在抽象基类上使用完整的“接口”。对于具体实现,请删除接口和前缀,具有以下特征:
class ServiceClientInterface {
// some pure virtual methods
};
class XMLServiceClient {
// Or whatever "service" it is
};
class TestServiceClient {
// some well defined
};
答案 2 :(得分:0)
ServiceClientInterface / ServiceClient或ServiceClient / ServiceClientImpl。其他人听起来太人工了。
答案 3 :(得分:0)
ServiceClientImpl
对我来说最有意义。这是最清楚地告诉你你需要知道什么的那个。这是ServiceClient背后的实现。
“标准”和“基本”告诉你什么都没有用。是否有非标准的ServiceClient?这个的标准究竟是什么?它是否符合某些ISO标准或者什么?基本听起来也像是“高级”版本。
“具体”可能有效,我从来都不喜欢这个术语。