提取的接口命名约定

时间:2009-06-09 14:43:51

标签: c++ interface naming-conventions

我目前正在重构一些代码以使其更易于测试。 具体来说,我正在提取几个类的接口,以便轻松创建测试双精度。

我想保持公共接口与此代码相同,在原始类之后命名接口。

然而,这给我留下了什么称为原始类的问题。

我正在使用C ++。

如果我的界面是:

class ServiceClient;

我应该怎样称呼这种情况,我想出了一些我不相信的选择:

class ConcreteServiceClient;
class ServiceClientImpl;
class StandardServiceClient;
class BasicServiceClient;

人们使用哪些约定?

4 个答案:

答案 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标准或者什么?基本听起来也像是“高级”版本。

“具体”可能有效,我从来都不喜欢这个术语。