개발 일반

개발 일반잊을 때쯤 한번 다시 읽어봐야할 Clean code에 관하여 (경계)

민초부 2021. 3. 23. 20:49
반응형
  • 외부 라이브러리를 사용하는 것에 대한 이야기

 

  • 외부 라이브러리를 사용하는 부분을 Wrapper Class로 따로 감싸줘야 한다.
    • 앞서 예외 처리를 한 원리와 동일하게 라이브러리의 값이 바뀌게 되더라도 사용하는 쪽에서 변경할 사항이 없도록 클래스 내부에서 처리해야 한다.
    • 그리고 Map이 가지고 있는 무수한 function들이 많은데 그냥 바로 HashMap()으로 개발 수 있게 하면 안에 모든 function을 난잡하게 사용할 수 있게 되는데 Wrapper class을 사용해서 통제하며 개발하면 특정 function만 사용하며 개발할 수 있도록 개발이 가능하다. 
// Before
Map sensors = new HashMap();

// Sensor가 필요한 객체 코드는 이렇게밖에 받지 못 한다. 
Sensor s = (Sensor)sensors.get(sensorId);

아래 코드와 같이 바꾸면 Map의 Value가 바뀌더라도 getById를 동일하게 계속 사용해줄 수 있다. 

public class Sensors {
  private Map sensors = new HashMap();
  
  public Sensor getById(String id) {
    return (Sensor) sensors.get(id);
  }
  ...
}

 

  • 경계를 살피고 익힌다.
    • 외부 코드와 기존 코드를 통합하기 전 테스트 케이스를 작성해 익혀야 하고 이를 기반으로 감싸는 클래스를 만들어 줘야 한다. 
    • 바로 코드를 작성해 정상적인지 확인하기 전 바로 라이브러리를 호출하는 테스트 코드를 만들어보라고 말한다.
    • 외부 코드와 기존 코드를 통합하기 전, 간단한 테스트 케이스를 작성해 외부 코드를 익힌다.
  • 깨끗한 경계를 만든다.
    • 외부 코드 자체를 호출하는 부분은 최소한으로 줄여야 한다. 
      (앞서 계속 얘기한 것)
  • 아직 존재하지 않는 코드 사용하기(Adaptor 구조)
    • 이것 역시 비슷한 내용이다. 
    • 예시로 사용해야하는 외부 코드가 개발이 덜 된 상태라면 가상의 API를 호출하는 Class를 만들어 이 안에서 예외처리를 하는 등 바라는 인터페이스를 구현하면 의도도 분명해질 수 있다.
    • API 버전업에 따른 수정사항이 있으면 모든 코드를 수정해야하는데 adaptor만 수정해주면 된다. 
    • 그리고 실제 개발이 되었다면 그 때 이제 이 가상으로 만든 Interface와 API의 간극을 매꾸면 된다. 

 

반응형