IT이야기/Clean Code(코딩규약)

클린코드 8장 : 경계(Boundaries)

FelixShin 2017. 11. 26. 08:00
반응형


0. 시작하는 글

- 소프트웨어를 개발할 때 모든 것을 무에서 유로 만든 것은 힘듦

 -> 오픈소스를 이용함 혹은 사내 다른 팀이 제공하는 컴포넌트를 사용

- 외부코드를 우리코드에 깔끔하게 통합해야 함

- 이번 장은 어떻게 외부코드를 깔끔하게 통합할까 하는 방법이 나와 있음


1. 외부코드 사용하기

- 인터페이스 제공자 : 적용성을 최대한 넓히려 함 / 인터페이스 사용자 : 자신의 요구집중하는 인터페이스를 바람

- Map사용하는 예시(책에 코드 있음 : Map을 이용하여 sensor라는 클래스 구현하는 예)

 : java.util.Map을 이용한 예

 : Map을 Sensors안에 숨김  - Sensors클래스 안에서 객체 유형을 관리하고 변환

 -> 이해하기 쉽지만 오용은 어려움 (설계규칙과 비즈니스 규칙을 따르도록 강제함)


2. 경계 살피고 익히기

- 외부코드 이용시 기능 출시는 쉬워짐 but 코드 테스틑 해야 함

- 외부코드를 익히기 어려움, 외부코드 통합하기도 어려움

-> 간단한 테스트 케이스를 작성해 외부코드를 익히는 것은학습테스트라고 부름 (by 짐 뉴커크(Jum Newkirk) )

   : 학습테스트는 API를 사용하는데 초점을 맞춤


3. log4j 익히기

- 로깅 기능 직접 구현 대신 아파치의 log4j패키지를 사용

- log4j를 이용하는 예시를 제시(책에 코드 있음)

 : log4j시작 전 처음할 작업을 준비하기 위한 초기화 메소드를 만듦

 : 출력스트림 여부에 따라 사용하는 방법을 메소드로 나눔

 -> 시사하는 바 : 외부 API를 이해해야 잘 사용할 수 있음


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

- 학습테스트 : 패키지가 예상대로 도는지 검증 (통합이후에 우리 코드와 호환 보장이 없으니 검증)

- 패키지 새버전이 나올때 마다 검증하는게 필요


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

- 아는 코드와 모르는 코드 분리하는 것이 경계임

- 모르는 코드는 알려고 해도 알 수 없음


6. 깨끗한 경계

- 소프트웨어 설계가 우수하면 변경하는데 많은 투자와 재작업이 필요하지 않음

- 외부코드 API를 이용할 떄 

 : 경계에 위치하는 코드는 깔끔하게 분리

 : 호출하는 코드를 가능한 줄여 경계를 관리


# Reference

: 클린코드 책(Clean code) / 지은이 : 로버트 C 마틴