오봉이와 함께하는 개발 블로그

CleanCode - 경계 본문

이론

CleanCode - 경계

오봉봉이 2024. 1. 4. 00:01
728x90

경계

외부에서 개발한 라이브러리나 프레임워크 등을 사용할 때 어떻게 하면 우리 코드에 잘 녹여낼 수 있는지에 대해 설명하는 것으로 보인다.
분량이 많지 않지만 중요한 이야기라 판단하여 글로 남긴다.

외부 코드 사용하기

이번 내용은 특정 라이브러리를 어떻게 사용해야 하는지에 대해 말하고 있다.
책에서는 Map이라는 Java에서 제공하는 라이브러리를 예시로 한다.

특정 함수의 파라미터나 반환 값으로 Map 같은 라이브러리를 넘겨주면 메서드 내부나 반환 받는 값을 통해 Map 클래스에 구현된 메서드들을 사용할 수 있다.
이러면 어떤 문제가 발생하냐면 누구나 이 Map이라는 객체에 접근하여 조작이 가능하다는 말이다.

책에서 문제 해결 방법으로 클래스를 통해 감싸는 방법을 제공한다

public class Sensors {
    private Map sensors = new HashMap();

    public Sensor getById(String id) {
        return (Sensor) sensors.get(id);
    }
}

함수의 파라미터나 반환값을 통해 여기저기 굴러다니는 Map 객체보다 Sensors를 통해 관리하는 것이 더 안전해 보인다.
이를 통해 협업하는 개발자들끼리 설계 규칙이나 비즈니스 규칙을 따르게 강제할 수 있게 된다.

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

이 내용은 외부 라이브러리 or 프레임워크를 사용할 때 버전이 변경될 경우 테스트 코드를 통해 우리가 사용하는 코드에 변경 사항이 있는지 없는지 검사할 수 있다는 내용인 거 같다.
테스트 코드를 작성함으로 해당 라이브러리에 대한 이해가 되었고, 버전이 변경되었을 때 이해된 부분이 변경되었는지 가장 간편하게 알 수 있는 방법은 미리 작성해둔 테스트 코드가 있을 경우 테스트 코드를 돌려보는 방법이다.
테스트 코드가 문제없이 돌아가면 오래된 버전을 사용하지 않아도 된다.

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

이 내용은 협업할 때 필요한 API가 구현되지 않은 경우 우리가 필요한 동작은 알고 있으니 원하는 동작을 미리 구현해두고(Mock과 유사한 개념으로 보인다.) 인터페이스를 통한 디자인 패턴을 적용해 기능을 테스트할 수 있다는 내용으로 보인다.
인터페이스를 통한 구현이기 때문에 실제 코드가 구현됐을 때 구현체만 교체해서 코드를 테스트할 수 있다.

마무리

이번 경계 라는 내용은 우리가 직접 구현하지 않은 기능을 어떻게 하면 잘 사용할 수 있는지에 대해 알려주는 내용이라 생각한다.
설계된 소프트웨어라면 코드 변경에 많은 노력이 필요하지 않을 것이다. 비용 증가를 조심하자.

728x90
Comments