10.미흡한 라이브러리 클래스 Incomplete Library Class

라이브러리 클래스는 소프트웨어 재사용 관점에서 유용하다.
하지만 개발자가 라이브러리 클래스를 변경할 수 없는 경우가 종종 있기 때문이다.
클래스 라이브러리를 만드는 사람이라고 모든 것을 다 아는 것은 아니다.

라이브러리 클래스 선정할 때 확인 사항.

  1. 라이브러리 클래스가 완성되었는지 확인을 해야합니다.
  2. 향후 발생할 수 있는 코드 사용을 고려해야 합니다.

라이브러리 클래스 변경 방법

○ To introduce a few methods to a library class, use Introduce Foreign Method
라이브러리 클래스에 몇 가지 메서드를 도입하려면 [ 외부 메서드 소개]를 사용 합니다.
○ For big changes in a class library, use Introduce Local Extension
클래스 라이브러리의 큰 변경 사항은 로컬 확장 소개를 사용하십시오 .

나의 생각 : 개발을 하다보면 유행처럼 외부 Library를 가져와 사용할 때가 있다. 이 Library는 완벽할 수 없지만 완성도를 생각하고 향후 확장을 위해 custom하기 좋은지 신중히 검토해야 한다. custom을 할 때 [외부 메서드 소개], [로컬 확장 소개]방법을 사용하자.

Introduce Foreign Method
참고 : https://sourcemaking.com/refactoring/introduce-foreign-method

  1. 유틸리티 클래스에는 필요한 메서드가 없으므로 클래스에 메서드를 추가할 수 없습니다.
  2. 메서드를 클라이언트 클래스에 추가하고 유틸리티 클래스의 객체를 인수로 전달합니다.
class Report {
  //...
  void sendReport() {
    Date nextDay = new Date(previousEnd.getYear(),
      previousEnd.getMonth(), previousEnd.getDate() + 1);
    //...
  }
}
class Report {
  //...
  void sendReport() {
    Date newStart = nextDay(previousEnd);
    //...
  }
  private static Date nextDay(Date arg) {
    return new Date(arg.getYear(), arg.getMonth(), arg.getDate() + 1);
  }
}

웹을 하다보면 외부 Library를 사용할 때가 있다. 이 Library가 완벽할 수는 없다. 해당 Library를 custom할 필요가
있을때, 외부 메서드를 만드는 방법이 있다.

Introduce Local Extension
참고: https://sourcemaking.com/refactoring/introduce-local-extension

  1. 유틸리티 클래스에는 필요한 일부 메서드가 들어 있지 않습니다. 그러나 이러한 메서드를 클래스에 추가할 수는 없습니다.
  2. 메서드를 포함하는새 클래스를 작성하여 유틸리티 클래스의 하위 또는 랩퍼를 만드십시오.

또 하나의 방법은 새 확장 클래스를 만드는 것입니다.