Community

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

← Go back
클린코드 6장 객체와 자료구조
#clean_code
2년 전
427


TIL (Today I Learned)

2022.03.01

오늘 읽은 범위

6장. 객체와 자료구조

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

  • 자료 추상화 변수 사이에 함수라는 계층을 넣는다고 구현이 저절로 감춰지지는 않는다. 구현을 감추려면 추상화가 필요하다! 그저 (형식 논리에 치우쳐) 조회 함수와 설정함수로 변수를 다룬다고 클래스가 되지는 않는다. 그보다는 추상 인터페이스를제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 진정한 의미의 클래스다.

    자료를 세세하게 공개하기보다는 추상적인 개념으로 표현하는 편이 좋다.

  • 자료/객체 비대칭 객체 지향 코드에서 어려운 변경은 절차적인 코드에서 쉬우며, 절차 적인 코드에서 어려운 변경은 객체 지향 코드에서 쉽다! 복잡한 시스템을 짜다 보면 새로운 함수가 아니라 새로운 자료 타입이 필요한 경우가 생긴다. 이때는 클래스와 객체 지향 기법이 가장 적합하다. 반면, 새로운 자료 타입이 아니라 새로운 함수가 필요한 경우도 생긴다. 이때는 절차적인 코드와 자료 구조가 좀 더 적합하다. 분별 있는 프로그래머는 모든 것이 객체라는 생각이 미신임을 잘 안다. 때로는 단순한 자료 구조와 절차적인 코드가 가장 적합한 상황도 있다.

  • 디미터 법칙 모듈은 자신이 조작하는 객체의 속사정을 몰라야 한다는 법칙

  • 자료 전달 객체 자료 구조체의 전형적인 형태는 공개 변수만 있고 함수가 없는 클래스다.이런 자료 구조체를 때로는 자료 전달 객체(Data Transfer Object, DTO)라 한다.

  • 시스템을 구현할 때, 새로운 자료 타입을 추가하는 유연성이 필요하면 객체가 더 적합하다. 다른 경우로 새로운 동작을 추가하는 유연성이 필요하면 자료 구조와 절차적인 코드가 더 적합하다. 우수한 소프트웨어 개발자는 편견 없이 이 사실을 이해해 직면한 문제에 최적인 해결책을 선택한다.

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

  • 객체지향에 대해서 배우면서 객체지향이 훨씬 세련된(?)프로그래밍 방법이라고 설명하는 책이 많다. 어느 정도는 동의하지만 모든 상황에서 절대적으로 맞는 것은 아니라는 것을 깨달았다.

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

  • ‘디미터의 법칙’이라는 개념을 처음 들어봤다.  https://mangkyu.tistory.com/147 위의 링크의 글을 읽어서 대충 감은 오는데 아직도 사실 확실히는 모르겠다.