2009-06-09 45 views
5

我目前正在重構一些代碼以使其更具可測試性。 具體來說,我提取了幾個類的接口,以便於創建測試雙打。提取的界面命名約定

我想保持公共接口與此代碼相同,並在原始類之後命名接口。

但是,這給我留下了什麼叫原始類的問題。

我正在使用C++。

如果我的界面:

class ServiceClient; 

我應該叫contrete,我想出了,我不是被說服了幾個選項:

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

做些什麼約定人們使用?

+0

再看到這個問題,承擔這個:在Java中實現接口時的默認VS默認地將Impl(http://programmers.stackexchange.com/questions/75956/default-vs-impl-when-implement -interface-in-java) – User 2012-03-07 05:14:39

回答

6

我會改變接口類的名稱。

class ServiceClientInterface {}; 

然後將其放置在seprate命名空間中的具體實現:

namespace MyService 
{ 
    class Client: public ServiceClientInterface {}; 
} 

namespace MyServiceTest 
{ 
    class TestClient: public ServiceClientInterface {}; 
} 

或者完全不同的東西。 PS:我是全名。我不喜歡簡短的'我'是界面的東西。你的口味可能有所不同

+0

我決定使用postfix接口,因爲這解決了這個問題,並且具有顯示哪些類實際上是接口的額外好處,因爲C++沒有強制執行的方式。 – 2009-06-11 14:26:25

0

ServiceClientInterface/ServiceClient或ServiceClient/ServiceClientImpl。其他人聽起來太虛假了。

0

ServiceClientImpl對我最有意義。這是最清楚地告訴你你需要知道的一個。這是ServiceClient背後的實現。

「Standard」和「Basic」確實告訴你沒有什麼用處。有沒有非標準的ServiceClient?這個標準究竟是什麼標準?它辜負了一些ISO標準或什麼?基本聽起來像是有一個「高級」版本。

「混凝土」可能工作,我從來沒有喜歡那個術語。

0

通常,我爲pimpl idiom保留「Impl」。我在抽象基類上使用完整的「接口」。對於具體的實現,刪除接口和前綴什麼專業化是這樣的:

class ServiceClientInterface { 
    // some pure virtual methods 
}; 


class XMLServiceClient { 
    // Or whatever "service" it is 
}; 

class TestServiceClient { 
    // some well defined 
};