레거시 코드를 유지 관리하는 일환으로 설계의 일부를 주로 테스트 할 수 있도록 변경해야합니다 (단위 테스트). 해결해야 할 문제 중 하나는 구성 요소 간의 기존 인터페이스입니다. 두 구성 요소 사이의 인터페이스는 정적 메서드 만 포함하는 클래스입니다.인터페이스 재 설계에 대한 제안 받기
간단한 예 :
class ABInterface {
static methodA();
static methodB();
...
static methodZ();
};
다른 방법은 일부 입력 데이터를 준비하기 위해 ABInterface :: methodA()을 사용하고 성분 B.
내에 해당 함수를 호출 할 수 있도록 인터페이스를 성분 (A)로 사용되는이제 우리는 여러 가지 이유로이 인터페이스 재 설계하기 위해 노력하고있다 : 우리의 단위 테스트 범위를 확장
을 - 우리가 입술에 필요 이 구성 요소와 스텁/모의 객체 간의 의존성을 도입해야한다.
원래의 설계와 다른 인터페이스 (예 : 컴포넌트 간 i/f에 사용되는 많은 새로운 함수가이 인터페이스 클래스 외부에서 생성됩니다.
- 코드가 오래되었습니다. 시간이 지나면 많이 변경되어 리팩토링해야합니다.
변경 내용이 나머지 시스템에 영향을주지 않아야합니다. 우리는 많은 테스트 요구 아티팩트를 프로덕션 코드에 그대로 두려고합니다. 성능은 매우 중요하며 재 설계 후 성능 저하가 없어야합니다. C++에서는 코드가 OO입니다.
나는 어떤 접근 방식을 택할 것입니까? 이 작업을 효율적으로 수행하는 방법에 대한 제안 사항은 무엇입니까?
는 하나의 클래스 인터페이스는 매우 유용하지 않습니다. 오히려 일종의 "경량"uml 다이어그램이 필요합니다. 리팩터링을 제대로하기 위해서는 필요한 정보의 흐름입니다. –
이것은 하나의 인터페이스 클래스이고 그 정적 메소드는 컴포넌트 A에서 컴포넌트 B로 올바른 호출을하기 위해 사용됩니다. 두 컴포넌트는 단지 2 개의 클래스가 아니라 라이브러리입니다. 정보의 흐름 - 성분 A에서있어서, 상기 인터페이스 클래스의 정적 메소드를 사용하여 입력 PARAMS 하나 이상의 채워지 적절한 리턴 코드에 다시 복귀하고, 어떤 계산이 수행되어 B에서 B.에서 메소드를 호출 A.에있는 호출 함수는 이것이 더 나은 흐름을 설명하기를 바란다. (나는 어떤 움틀도 준비가되어 있지 않다.) – ratkok