누가봐도 인생 1회차의 기록장

개발공부/JavaScript 책

[클린코드] 6장 객체와 자료 구조

김놀먹 2022. 5. 4. 20:25

오늘 TIL 3줄 요약

  • 객체는 동작을 공개하고 자료를 숨긴다.
  • 자료를 세세하게 공개하기 보다는 추상적인 개념으로 표현하는 것이 좋다.
  • 객체지향 코드에서 어려운 변경은 절차적인 코드에서 쉬우며, 절차적은 코드에서 어려운 변경은 객체지향 코드에서 쉽다.

책에서 기억하고 싶은 내용

  • 변수를 비공개private로 정의하는 이유 : 남들이 변수에 의존하지 않게 만들고 싶어서

<자료 추상화>

  • 변수를 private으로 선언하더라도 각 값마다 조회get 함수와 설정set 함수를 제공한다면 구현을 외부로 노출하는 셈
  • 구현을 감추려면 추상화가 필요하다!
  • 개발자는 객체가 포함하는 자료를 표현할 가장 좋은 방법을 심각하게 고민해야 한다. 아무 생각없이 조회/설정 함수를 추가하는 방법이 가장 나쁘다

<자료/객체 비대칭>

  • 객체지향 코드에서 어려운 변경은 절차적인 코드에서 쉬우며, 절차적은 코드에서 어려운 변경은 객체지향 코드에서 쉽다.
  • 복잡한 시스템을 짜다보면 새로운 함수가 아니라 새로운 자료 타입이 필요한 경우가 생긴다. 이때는 클래스와 객체지향 기법이 가장 적합하다. 반면, 새로운 자료 타입이 아니라 새로운 함수가 필요한 경우도 생긴다. 이때는 절차적인 코드와 자료 구조가 좀 더 적합하다.

<디미터 법칙>

  • 디미터법칙 : 모듈은 자신이 조작하는 객체의 속사정을 몰라야 한다는 법칙
  • 기차충돌 : 여러 객체가 한줄로 이어진 기차처럼 보이기 때문에 피하는 편이 좋음(조잡)
    예시) final String outputDir = ctxt.getOptions().getScratchDir().getAbsolutePath();
  • 잡종구조 (절반은 객체, 절반은 자료 구조인 잡종구조도 피하는 편이 좋음)
  • 구조체 감추기

<자료 전달 객체>

  • 자료 구조체의 전형적인 형태는 공개 변수만 있고 함수가 없는 클래스다. 이런 자료 구조체를 때로는 자료 전달 객체Data Transfer Object, DTO라 한다.
  • DTO: 데이터베이스와 통신하거나 소켓에서 받은 메시지의 구문을 분석할 때 유용. 흔히 데이터베이스에 저장된 가공되지 않은 정보를 애플리케이션 코드에서 사용할 객체로 변환하는 일련의 단계에서 가장 처음으로 사용하는 구조체

오늘 읽은 소감은? 

오늘 읽은 내용은 이해하기 너무 어려웠다. 공부를 한 다음에 다시 읽어봐야겠다!

 

궁금한 내용, 잘 이해되지 않는 내용

객체지향, 자료구조, DTO 등