Community

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

← Go back
TIL 6장. 객체와 자료 구조
#clean_code
2년 전
585


TIL (Today I Learned)

2022.02.28

오늘 읽은 범위

6장. 객체와 자료 구조

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

  • 자료의 추상화

    • (p. 119) 구현을 감추려면 추상화가 필요하다! 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 진정한 의미의 클래스다.

    • 개발자는 객체가 포함하는 자료를 표현할 가장 좋은 방법을 심각하게 고민해야 한다. 아무 생각 없이 조회/설정 함수를 추가하는 방법이 가장 나쁘다.

  • 자료/객체 비대칭

    • (p. 119) 객체 - 추상화 뒤로 자료를 숨긴 채 자료를 다루는 함수만 제공

    • (p. 119) 자료 구조 - 자료를 그대로 공개하며 별다른 함수를 제공하지 않음

    • (p. 120) 두 정의는 본질적으로 상반된다.

    • (p. 122) 분별 있는 프로ㅡ래머는 모든 것이 객체라는 생각이 미신임을 잘 안다. 때로는 단순한 자료 구조와 절차적인 코드가 가장 적합한 상황도 있다.

  • 디미터 법칙

    • (p. 123) 모듈은 자신이 조작하는 객체의 속사정을 몰라야 한다는 법칙.

    • 객체는 자료를 숨기고 함수를 공개한다. 즉 객체는 조회 함수로 내부 구조를 공개하면 안 된다는 의미다. (그러면 내부 구조를 숨기지 않고 노출하는 셈이니까.)

  • 잡종구조

    • (p. 124) 객체와 자료구조를 혼용해서 생긴 단점만 모아놓은 구조이므로 피하는 것이 상책이다.

  • (p. 127 ~ 128) 결론

    • 객체는 동작을 공개하고, 자료는 숨긴다. 그래서 기존 동작을 변경하지 않으면서 새 객체 타입을 추가하기는 쉬운 반면, 기존 객체에 새 동작을 추가하기는 어렵다.

    • 자료 구조는 별다른 동작 없이 자료를 노출한다. 그래서 기존 자료 구조에 새 동작을 추가하기는 쉬우나, 기존 함수에 새 자료 구조를 추가하기는 어렵다.

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

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

  • 예전 함수 방식의 프로그래밍에 익숙해 객체를 사용하지 않다보니 어렵다. 어려워서 이해도 안되고 하얀 건 배경이고, 검은 건 글씨다...나중에 몇 번이고 다시 읽어봐야 겠다.

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

  • 휴리스틱(heuristic) - 발견법 (위키백과 참조)

    • 불충분한 시간이나 정보로 인해 합리적인 판단을 할 수 없거나, 체계적이면서 합리적인 판단이 굳이 필요하지 않은 상황에서 사람들이 빠르게 사용할 수 있게 보다 용이하게 구성된 간편추론의 방법

    • 예시

      • 어떤 문제를 이해하기 어렵다면, 그림을 그려본다.

      • 해결법을 찾기 힘들다면, 해결법이 있다고 가정하고 어떤것이 그것으로부터 유도되는지를 상정해본다.

      • 문제가 추상적이라면, 구체적인 예를 들어 본다.

      • 먼저 보편적인 문제를 먼저 푼다.