Book Record/Clean Code

[Clean Code] 8장 경계

lakelight 2022. 10. 21. 10:50
728x90
반응형

 

깨끗한 코드를 작성하기 위한 여덟번째 기록

 

외부 코드 사용하기

java.util.Map을 살펴보면 Map은 다양한 인터페이스로 수많은 기능을 제공합니다. Map이 제공하는 기능성과 유연성은 확실히 유용하지만 그만큼 위험도 큽니다. 프로그램에서 Map을 만들어 여기저기 넘긴다고 했을 때 Map 이 제공하는 clear() 메서드를 통해 누구나 Map의 내용을 지울 수 있게 되기 때문입니다.

Map과 같은 경계 인터페이스를 이용할 때는 클래스나 클래스 계열 밖으로 노출되지 않도록 주의해야 합니다. Map 인스턴스를 공개 API의 인수로 넘기거나 반환값으로 사용하지 않습니다.

 

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

팀 작업에서 다른 팀이 API를 설계하지 않았을 때, 구현을 미루고 자체적으로 필요한 인터페이스를 정의합니다. 그렇게 되면 인터페이스를 전적으로 우리 팀에서 통제한다는 장점이 생기고, 코드 가독성도 높아집니다.

인터페이스 정의하는 작업은 Adapter 패턴으로 API 사용을 캡슐화해 API가 바뀔 때 수정할 코드를 한 곳에 모은 것입니다.

 

깨끗한 경계

경계에서는 흥미로운 일이 많이 벌어집니다. 변경이 대표적인 예입니다. 설계가 우수하다면 변경하는데 많은 투자와 재작업이 필요하지 않습니다. 

즉, 경계에 위치한 코드는 깔끔히 분리하고, 테스트 케이스도 작성해야합니다. 외부 패키지를 호출하여 외부 패키지에 의존하는 것  보다 통제가 가능한 우리 코드에 의존하는 것이 좋습니다.

즉, 새로운 클래스로 경계를 감싸거나 Adapter 패턴을 사용해 원하는 인터페이스를 패키지가 제공하는 인터페이스로 변환하는 작업을 하는 것이 좋습니다.

 

마무리

개발을 할 때 외부에서 가져오는 라이브러리나 코드가 정말 많습니다.
이때, 경계를 잘 통제하지 못한다면 정말 많은 문제가 생길 것입니다.
경계를 깨끗하게 할 수 있도록 노력하는 개발자가 되겠습니다.

 

[출처]
Clean Code (클린 코드,애자일 소프트웨어 장인 정신), 로버트 C. 마틴 저

728x90
반응형

'Book Record > Clean Code' 카테고리의 다른 글

[Clean Code] 10장 클래스  (0) 2022.11.06
[Clean Code] 9장 단위 테스트  (2) 2022.10.24
[Clean Code] 7장 오류 처리  (0) 2022.10.20
[Clean Code] 6장 객체와 자료 구조  (2) 2022.10.07
[Clean Code] 5장 형식 맞추기  (4) 2022.10.06