2009-06-09 3 views
5

현재 좀 더 테스트 할 수 있도록 일부 코드를 리팩토링하고 있습니다. 특히, 테스트 복식을 쉽게 만들 수 있도록 여러 클래스의 인터페이스를 추출하고 있습니다.추출 된 인터페이스 명명 규칙

공용 인터페이스를이 코드와 동일하게 유지하고 원래 클래스 다음에 인터페이스의 이름을 지정하고 싶습니다.

그러나 이것은 원래 클래스를 무엇이라고 부를지의 문제로 남겨 둡니다.

저는 C++을 사용하고 있습니다. 내 인터페이스 인 경우

: 무슨 규칙

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

: 나는 contrete를 호출해야 무엇

class ServiceClient; 

, 나는 납득 아니에요 몇 가지 옵션을 마련했습니다 사람들이 사용합니까?

+0

다른이 질문을 참조하십시오이에 걸릴 : [IMPL 대 기본 자바 인터페이스를 구현 (http://programmers.stackexchange.com 구체적인 구현을 위해,이다이 무엇 전문화와 인터페이스 및 접두사를 드롭/question/75956/default-vs-impl-when-implement-interfaces-in-java) – User

답변

6

인터페이스 클래스의 이름을 변경합니다.

class ServiceClientInterface {}; 

다음 seprate 네임 스페이스의 구체적인 구현을 배치 :

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

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

또는 완전히 다른 무언가를.
PS. 나는 정식 이름이다. 나는 마땅치 않다. 나는 짧은 '나는'인터페이스와 같은 것을 좋아한다. 취향이 다를 수 있습니다.

+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 
};