Community

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

← Go back
TIL(22.03.01)
#clean_code
2년 전
628


TIL (Today I Learned)

2022.03.01

오늘 읽은 범위

6장. 객체와 자료구조

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

  • 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 진정한 의미의 '클래스'다. (p.119)

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

  • 객체는 추상화 뒤로 자료를 숨긴 채 자료를 다루는 함수만 공개한다. 자료 구조는 자료를 그대로 공개하며 별다른 함수는 제공하지 않는다. (~) 두 개념은 사실상 정반대다. 사소한 차이로 보일지 모르지만 그 차이가 미치는 영향은 굉장하다. (p.121)

    • (자료 구조를 사용하는) 절차적인 코드는 기존 자료 구조를 변경하지 않으면서 새 함수를 추가하기 쉽다. 반면, 객체 지향 코드는 기존 함수를 변경하지 않으면서 새 클래스를 추가하기 쉽다.

    • 절차적인 코드는 새로운 자료 구조를 추가하기 어렵다. 그러려면 모든 함수를 고쳐야 한다. 객체 지향 코드는 새로운 함수를 추가하기 어렵다. 그러려면 모든 클래스를 고쳐야 한다.

  • 디미터 법칙은 잘 알려진 휴리스틱으로 모듈은 자신이 조작하는 객체의 속사정을 몰라야 한다는 법칙이다. (p.123)

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

  • 오늘의 내용을 읽어보며 느낀 점은, 사용자에게 원하는 기능을 제공해주더라도 그 기능을 가능케해주는 코드 내의 정보는 비공개가 되어야 한다는 점이다. 어찌보면 사용자가 알 필요도 없는 내용임과 동시에 코드의 포함되어 있는 정보의 보안을 지키기 위해서 취해야 할 방법이라는 게 이러한 것인가라는 생각을 하게 되었다.

  • 사실 아직도 외부 접근으로부터 정보의 접근을 제한하는 방식의 선언이나 코드를 작성해본 경험이 없다. 그렇기 때문에 어떻게 코드의 정보를 지킬 수 있는 지에 대해 체감이 되지 않는 것 같다. 그리고 아직 객체나 자료구조를 잘 활용하지도 못하는 듯해, 이 또한 많이 코드에 적용해 보면서 연습할 수 있는가에 대한 고민이 되는 듯한 이번 학습 내용이었다.

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

  • 오늘은 지난 장의 내용처럼 어렵거나 궁금한 의미를 가진 단어는 쓰이지 않았다. 다만, 오늘의 내용을 녹여낸 예시를 좀 더 찾아보고 싶다.