2022-01-28 독서 일지

자료 구조

디미터의 법칙 ( Law Of Demeter )

  • 어떤 객체가 다른 객체에 대해 지나치게 많이 알다보니, 결합도가 높아지고 좋지 못한 설계를 야기한다는 것을 발견했다.
  • 이를 개선하고자 객체에게 자료를 숨기는 대신 함수를 공개하도록 하였는데, 이것이 바로 디미터의 법칙이다.
  • 다른 객체가 어떠한 자료를 갖고 있는지 속사정을 몰라야 한다는 것을 의미한다.

자료 전달 구조체 (Data Transfer Object)

  • 자료 전달 구조체는 자료 전달의 목적만을 위해 써라
  • 만약 자료 전달 구조체에 비즈니스 규칙 메서드를 추가한다면 잡종 구조체로 전락한다
  • 객체는 동작을 공개하고 자료를 숨겨라
  • 객체는 기존 동작을 변경하지 않으면서 새 객체 타입을 추가하기는 쉬우나 기존 객체에 새 동작을 추가하기에는 어렵다
  • 자료 구조는 자료 그대로를 노출한다. 그래서 기존 자료구조에서 새 동작을 추가하기는 쉬우나 기존 함수에 새 자료 구조를 추가하기는 어렵다
새로운 자료 타입을 추가하는 유연성이 필요하면 객체가 더 적합하다.
다른 경우로 새로운 동작을 추가하는 유연성이 필요하면 자료 구조와 절차적인 코드가 더 적합하다.
우수한 프로그래머라면 편견없이 이 사실을 이해하고 직면한 문제에 최적인 해결책을 선택한다.

오류 처리

프로그램은 항상 잘못될 여지를 소지하고 있다. 이를 바로잡을 책임은 프로그래머에게 있다.

try-catch-finally 부터 작성하라

  • try catch는 트랜잭션과 비슷하다.

(Unchecked Exception) 미확인 예외를 사용하라

예외에 의미를 제공하라

호출자를 고려해 예외 클래스를 정의하라

정상 흐름을 정의하라

Null을 반환하지 마라

  • 한줄 건너 한줄 null을 체크하는 코드는 무수히 많다.
  • null을 반환할 상황이라면, 빈객체 또는 빈 구조체, 빈 자료 구조를 만들어 반환하라

null을 전달하지 마라

경계

reference

  • 로버트 C. 마틴 지음, 박재호·이해영 옮김 『 Clean Code 』, 프로그램 프로그래밍 프로그래머, 인용.
  • https://mangkyu.tistory.com/147