독서/클린코드

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

콘요맘떼 2022. 3. 9. 21:43

TIL (Today I Learned)

2022.03.09

 

오늘 TIL 3줄 요약

  • 거대한 하나의 클래스보다 잘 쪼갠 여러 클래스가 낫다.
  • 클래스는 하나의 책임만을 가져야 한다. (이것이 지켜졌는지 여부는 이름을 지을 때 티가 난다.)
  • 클래스의 응집도를 높이려면 메소드의 매개변수 수를 줄이자.

 

오늘 읽은 범위

10장. 클래스

 

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

  • 표준 자바 관례에 따르면 클래스는 static public 상수 → static private 변수 → private 변수 (인스턴스 변수) → 공개 함수 → 호출되는 비공개 함수의 순서로 내용이 구성된다. public 변수가 필요한 경우는 거의 존재하지 않으며 비공개 함수는 자신을 호출하는 공개 메소드의 바로 아래에 위치시킨다. (p.172)
  • 테스트 코드의 접근을 위해 변수 혹은 유틸리티 함수를 protected로 선언할 수도 있다. 그렇지만 이것은 최후의 선택이며 언제나 캡슐화를 유지하는 것을 최우선으로 잡는다. (p.172)
  • 클래스는 단일 책임 원칙(SRP, Single Responsibility Principle)에 따라 하나의 책임만을 가져야 한다. (여기서 책임은 클래스를 변경해야 하는 이유로 파악할 수 있다.) 이를 검증하는 간단한 방법 중 하나가 '클래스 이름'이다. 간결하고 명확한 이름이 지어지지 않는다면 클래스의 책임이 너무 많아서이다. 또한 클래스의 이름은 if, and, or, but 등을 사용하면 안 된다. (p.175)
  • 각 클래스의 메소드는 클래스 인스턴스 변수를 하나 이상 사용해야 하며 메소드에서 사용되는 클래스 인스턴스 변수의 비율이 높을수록 클래스는 응집도가 높다. 응집도가 높은 클래스를 짜기 위해서는 메소드를 작성할 때 '함수는 짧고 매개변수 수는 적게'라는 키워드를 기억하자. (p.177)
  • 클래스 메소드에서 매개변수를 받기보다는 해당 변수들을 클래스 인스턴스 변수로 승격시키자. 그리고 클래스를 다시 쪼개보자. (p.178)
  • 새 기능을 추가할 때에는 기존 코드를 변경하지 말고 확장(extend)하자. (p.188)

 

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

  • 예전에 코드를 작성할 때 동일한 기능을 수행하지만 들어오는 객체에 따라 두 가지 로직 중 하나를 사용하는 함수가 있었다. 그 당시에는 각각의 로직에 대해 함수를 만들고 그 두 함수를 하나로 묶어줬었는데 지금 생각해보면 그냥 두 타입에 대해서 클래스를 하나씩 만들고 해당 기능에 대해서는 각자 메소드를 오버라이딩하는 것이 맞았을 것 같다. 책을 읽으면 읽을수록 이전 프로젝트에서 부족했던 부분들이 더 많이 보인다. 프로그래밍 공부는 참 할 게 많다. 그래서 재미있는 것 같다.

 

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

  • SOAP (Simple Object Access Protocol) : REST와 같이 온라인 데이터 전송방식 중 하나이다. SOAP는 다른 언어로 다른 플랫폼에서 빌드된 애플리케이션이 통신할 수 있도록 설계된 최초의 표준 프로토콜로 HTTP, HTTPS, SMTP 등을 통해 XML 기반 메시징을 제공한다. (그렇기 때문에 XML을 근간으로 헤더와 바디를 조합하는 디자인 패턴을 가진다.)

 

오늘 읽은 다른사람의 TIL

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

[클린코드] 2022-03-06 TIL  (0) 2022.03.07
[클린코드] 2022-03-05 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