Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
TIL-8
by leeq
#clean_code
2년 전
1,075
1

오늘 TIL 3줄 요약

  • 경계 인터페이스를 캡슐화 한다.

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

  • 경계에 위치하는 코드는 깔끔히 분리한다.

TIL (Today I Learned) 날짜

2022.03.05

오늘 읽은 범위

8장. 경계

책에서 기억하고 싶은 내용을 써보세요.

  1. 경계 인터페이스인 Map을 Sensors 안으로 숨긴다. 따라서 Map 인터페이스가 변하더라도 나머지 프로그램에는 영향을 미치지 않는다. - p146

  2. Map과 같은 경계 인터페이스를 이용할 때는 이를 이용하는 클래스나 클래스 계열 밖으로 노출되지 않도록 주의한다. - p146

  3. 곧바로 우리쪽 코드를 작성해 외부 코드를 호출하는 대신 먼저 간단한 테스트 케이스를 작성해 외부 코드를 익히면 어떨까? (중략) 이를 학습 테스트라 부른다. - p147

  4. 지금까지 간단한 콘솔 로거를 초기화하는 방법을 익혔으니, 이제 모든 지식을 독자적인 로거 클래스로 캡슐화한다. 그러면 나머지 프로그램은 log4j 경계 인터페이스를 몰라도 된다. - p149

  5. 학습 테스트는 공짜 이상이다. 투자하는 노력보다 얻는 성과가 더 크다. - p149

  6. 이런 경계 테스트가 있다면 패키지의 새 버전으로 이전하기 쉬워진다. 그렇지 않다면 낡은 버전을 필요 이상으로 오랫동안 사용하려는 유혹에 빠지기 쉽다. - p150

  7. 저쪽 팀이 송신기 API를 정의한 후에는 TransmitterAdapter를 구현해 간극을 메웠다. ADAPTER 패턴으로 API 사용을 캡슐화해 API가 바뀔 때 수정할 코드를 한곳으로 모았다. - p151

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

  9. 경계에 위치하는 코드는 깔끔히 분리한다. - p152

오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

이 장을 읽고 나니, 길이가 짧은 이유와 Assignment에 포함되지 않은 이유를 이해할 수 있었다. 지금까지 읽은 장 중, 가장 클린 코드와 직접적인 관련이 없고, 특정 상황에서만 적용되는 내용이다. 예를 들어, Map의 예가 그렇다. Map을 이용하여 새로운 객체를 만드는 과정에 대한 설명은 유용하다. 하지만, 최근 대부분의 언어에서 Map은 빌트인으로, 외부 코드라 보기 어렵다. 물론 HashMap의 시작이 java인 것도 있고, 이 책이 저술될 당시에는 해당되지 않겠지만 말이다.

이 장을 읽은 사람 중 트렌드에 대한 관심이 조금이나마 있는 사람은 모두 그렇겠지만, 나 또한 Log4j의 예시에서 Log4Shell 사태가 가장 먼저 떠올랐다. 비교적 최근에 발생한 보안 취약점 사태이고, 노마드 코더 유튜브에서도 다룬 것을 보았다. 그런데, 이 사태가 기묘하게도 이 장과 이전 장의 내용과 연관성이 있어 보인다. 내가 java 개발자도 아니기 때문에 정확한 경위는 모르지만 말이다.

학습 테스트에 대해 기술한 것은 굉장히 유용하다. 물론, 개발과 코딩을 어느 정도 경험해 보았다면 이를 자연스럽게 터득하여 사용할 것이다. 하지만 명확하게 설명된 글을 보는 것도 큰 도움이 된다. 최신 애플리케이션인데, 구버전 패키지를 사용하는 경우를 많이 겪어보았다. 개발 중에 패키지가 버전 업된 것이 아니라, 프로젝트 시작 시점보다 몇 년 전 버전의 패키지를 사용하는 경우 말이다. 분명, 이전에 사용한 템플릿을 그대로 사용했으리라. 만약 그렇다면 주기적으로 패키지를 업데이트해주는 것이 옳다. 학습 테스트를 구축하고 개발을 진행한다면 이 과정을 쉽게 진행할 수 있을 것 같다.

개발자는 왜 클린 코드에 목을 매는가? "코드 작성과 유지 보수를 쉽게 하기 위해서"이다. 클린 코드는 개발 효율은 증대하고, 혼동은 감소한다. 그런 의미에서 이 장에서 다룬 경계 인터페이스와 테스트도 클린 코드의 요소라 할 수 있다. 정교하게 분리된 경계 인터페이스가 깔끔하게 보이는 것은 당연하다.

오늘 읽은 다른사람의 TIL

핵심 내용을 깔끔하게 정리하셔서 7장의 내용의 리마인드할 수 있었다.

1 comment