2009-06-09 14 views
5

私は現在、よりテスト可能にするためにいくつかのコードをリファクタリングしています。 具体的には、複数のクラスのインターフェイスを抽出して、テストダブルを簡単に作成できるようにします。抽出されたインターフェイスの命名規則

私はパブリックインターフェイスをこのコードと同じにして、元のクラスの後にインターフェイスの名前を付けたいと思います。

しかし、これは私に元のクラスと呼ばれるものの問題を残します。

私はC++を使用しています。私のインタフェースがある場合は

:何の規則

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

:私はcontreteを呼び出す必要がありますどのような

class ServiceClient; 

、私は私がで確信していないいくつかのオプションを作ってみました人々は使用する?

+0

別のため、この質問は、これに取る参照してください:[Implを対デフォルトのJavaのインターフェイスを実装する](http://programmers.stackexchange.com具体的な実装では、これが何であるかを専門とインタフェースと接頭辞をドロップ/ questions/75956/default-vs-impl-when-implement-interfaces-in-java) – User

答えて

6

私はインターフェイスクラスの名前を変更します。

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

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

または完全に別の何か:

class ServiceClientInterface {}; 

その後seprate名前空間での具体的な実装を配置します。
PS。私は完全な名前になっています。私はドン; tのような短い私はインターフェイスのものです。あなたの好みは変わるかもしれません。

+0

私はpostfix Interfaceを使用することを決めました。これは問題を解決し、C++にはないクラスこれを強制する方法。 –

0

ServiceClientInterface/ServiceClient、またはServiceClient/ServiceClientImpl。他はあまりにも人工的に聞こえる。

0

ServiceClientImplが私に最も合っています。それはあなたが知る必要があることを最も明確に伝えるものです。 ServiceClientの背後にある実装です。

「標準」と「基本」は本当に役に立たないことを教えてくれます。非標準のServiceClientもありますか?これについては、正確に何が標準ですか?それは、いくつかのISO標準まで生きていますか?基本音には「高度な」バージョンもあります。

「コンクリート」が機能するかもしれませんが、私はその用語を好きにしたことはありません。

0

通常、私はpimpl idiomのために "Impl"を予約します。私は、抽象基本クラスで完全な "インターフェース"を使用します。

class ServiceClientInterface { 
    // some pure virtual methods 
}; 


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

class TestServiceClient { 
    // some well defined 
};