IT 관련 책 정리 및 후기/Clean Code

[Clean Code] 8장 경계

JUN0126 2022. 9. 19. 21:40

하나의 시스템을 만드는데 있어 모든 소프트웨어를 직접 개발하는 경우는 드물다. 외부 API 혹은 라이브러리를 사용할 수도 있으며 단순히 DB접근을 하더래도 흔히 다른 소프트웨어를 사용하곤 한다.

이러한 외부 코드를 우리의 코드에게 깔끔하게 통합해야할 필요가 있다.

 

외부코드 사용하기

인터페이스 제공자는 많은 사람들이 인터페이스를 사용하게 끔 많은 환경에서 돌아가게끔 하고, 사용자는 자신에게만 알맞는 인터페이스를 찾기 원한다 이에 따른 시스템 경계에 따른 문제들이 있는데 대표적인 예로 Map 이 있다.

Map 같은 경우는 누가 선언을 했던 지우는 권한은 누구에게나 있으며 key 값을 자유로이 선언할 수 있어 어떠한 객체든 추가 할 수도 있다.

이렇게 되면 사용자가 사용함에 있어 혼돈이 있을 수 있고 어떻게 지워졌는지 알 수 없는 상황을 나타낼 수 있다.

그러하여 Map 자체를 바로 사용하지말고 객체로 감싸서 사용하는 것이 좋다. 그렇게 하여서 사용할 수 있는 코드들을 제한 할 수 있고 값을 객체 내부에서 로직을 선언하여 값을 반환하기만 하면 외부에서의 접근을 최대한 막을 수 있기 때문이다.

Map sensors = new HashMap();

Sensor s = (Sensor)sensors.get(sensorId);

============== 변경(감싸기) ====================

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

 

학습테스트는 공짜 이상이다

학습 테스트는 패키지가 예상대로 도는지 검증한다. 외부 라이브러리와 통합한 이후라고 해도 새로운 버전의 패키지가 우리 코드와 무조건적으로 호환 된다는 보장은 없다. 

그러하여 학습 테스트를 만들어 놓고 버전을 업데이트 할 때마다 테스트를 돌려 해당 버전이 우리의 코드와 호환이 정상적으로 되는지 확인 해보는것이 좋다.

 

아직 존재하지 않는 코드를 사용하기

특정한 기능이 아직 구현되기 전이라면 특정한 기능을 할 것이라 예상되는 코드를 미리 인터페이스로 정의하고 기존의 기능과 분리함으로 써 기능적인 역할만 대략 만들어 놓고 특정한 기능을 가진 API 구현 완료 시 해당 API를 사용하도록 갈아 끼워주면 사용하기 용이하다.

 

깨끗한 경계 

경계에 위치하는 코드는 깔끔히 분리하고, 외부 패키지를 호출하는 코드를 가능한 줄여 경계를 관리하라.
새로운 클래스로 경계를 감싸거나 ADAPTER 패턴 사용하여 경계를 그어 관리하도록 하자

 

 

 

해당 내용은 Clean Code를 읽고 정리한 내용입니다.

주관적인 생각과 내용을 같이 적시하였으니 적확한 정보는 해당 책을 통하여 같이 확인 해주시길 바랍니다.

http://www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&barcode=9788966260959

 

Clean Code(클린 코드) - 교보문고

애자일 소프트웨어 장인 정신 | 나쁜 코드도 돌아는 간다. 하지만 코드가 깨끗하지 못하면 개발 조직은 기어간다. 매년 지저분한 코드로 수많은 시간과 상당한 자원이 낭비된다. 그래야 할 이유

www.kyobobook.co.kr