독서/클린코드

[클린코드] 2022-03-05 TIL

콘요맘떼 2022. 3. 7. 03:12

TIL (Today I Learned)

2022.03.05

 

오늘 읽은 범위

8장. 경계

 

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

  • 경계 인터페이스를 사용할 때에는 클래스로 감싸줌으로써 해당 경계 인터페이스가 전체 프로그램에 끼치는 의도치 않은 영향을 방지하고 프로그램에 필요한 기능만을 추출한다. (p.145)
  • 외부 코드를 사용할 때에는 먼저 자기 프로그램을 작성하는 것이 아니라 간단한 테스트를 작성하여 외부 코드의 사용법을 익히는 학습 테스트를 이용하자. (p. 146)
  • 경계를 최대한 줄이고 그 외의 요소들로부터 분리시킴으로써 프로그램에 대한 통제성을 높이자. 경계를 잘 관리하지 않으면 우리가 통제할 수 없는 영역의 외부 코드에 의해 너무 휘둘릴 수 있다. 최소한 경계 코드는 우리가 통제권을 쥘 수 있다. (p.152)

 

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

  • 사실 처음 챕터 제목을 읽었을 때에는 에러 경계같은 내용을 생각했는데 전혀 다른 내용이 나와서 당황했다. 외부 코드를 사용하는 것은 정말 조심해야 하는 영역인 것 같다. 내가 통제권을 가지지 못한 영역이 내 코드 여기저기에 스며들어있다면 가뜩이나 내 프로그램의 목적에 맞춰서 유지보수하기도 힘든데 외부 코드에 의해 이리 휘둘렸다 저리 휘둘렸다 할 테니까. 당연한 말이지만 외부코드가 아니더라도 프로그램의 모든 부분을 잘 쪼개는 것이 참 중요한 것 같다. 오늘 포트폴리오 사이트를 새로 만드는 과정에서 에러 경계의 위치를 고민하다 느낀 점이다. 코드는 분리를 잘 하고 분리한 코드들은 서로 인터렉션을 줄이는 것이 참 중요한 것 같다. 어떻게 보면 먼 과거의 성들을 보는 것 같아서 재미있다. 벽을 굳건하게 세우고 왕래가 필요하면 성문에서 문지기에게 검사받은 후에만 입장할 수 있으니 클래스, 인터페이스와 비슷한 느낌 아닌가? 요즘 사람들에게 '너는 MBTI N이 확실하구나'라는 말을 자주 듣는데 이래서인가 싶다.

 

궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.

  • 경계 인터페이스 : 어떠한 메소드에서 Map, List와 같은 자료구조를 반환하거나 공개 API 인수로 넘겨서 클라이언트에서 해당 인터페이스를 사용하는 것을 말한다. 경계 인터페이스는 클라이언트 측에서 예상하지 못한 동작으로 프로그램에 문제를 일으킬 수 가능성이 있다. 이러한 경계 인터페이스를 클래스로 감싸준다면 원하는 기능만을 도출(일부 기능을 직접 사용하던 변환시키던)하고 코드의 직관성 역시 향상시킬 수 있다. 또한 경계 인터페이스 내부가 변화하더라도 그것이 외부에 노출되지 않으며 감싼 클래스만을 수정하면 된다는 장점이 있다.
  • 학습 테스트 : 자신이 개발하지 않은 코드를 사용할 때 테스트하면서 사용법을 익히는 방식을 말한다. 테스트 코드를 작성하고 구체적으로 테스트를 돌리는 과정에서 프로그램의 사용법을 익힐 수 있다. 학습 테스트는 코드의 테스팅이 아니라 학습에 그 목적이 있다는 점이 중요하다. 학습 테스트에서는 프로그램에서 원하는 방식으로 테스트를 작성한다. 이 때 작성한 테스트는 이후에 해당 외부 코드가 변경되었을 때 해당 코드가 자신의 프로그램(+그 기능)과 호환되는지 점검하는데 지속적으로 활용될 수 있다. (참고용 링크)
  • 어뎁터 패턴 (Adapter Pattern) : 클래스의 인터페이스가 클라이언트에서 사용될 수 있도록 변환(적응)시켜주는 역할을 수행하는 어뎁터가 포함된 디자인 패턴이다. 어뎁터를 활용하면 호환되지 않은 클래스를 사용하거나 여러 클래스, 구조 사이에서 유연한 전환이 가능하다. 

'독서 > 클린코드' 카테고리의 다른 글

[클린코드] 2022-03-09 TIL  (0) 2022.03.09
[클린코드] 2022-03-06 TIL  (0) 2022.03.07
[클린코드] 2022-03-04 TIL  (0) 2022.03.05
[클린코드] 2022-03-01 TIL  (0) 2022.03.02
[클린코드] 2022-02-28 TIL  (0) 2022.03.01