Community

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

← Go back
TIL - 6장 객체와 자료 구조
#clean_code
7개월 전
315

오늘 TIL 3줄 요약

  • 객체가 포함하는 자료를 표현할 가장 좋은 방법을 고민하여 작성하자.

  • 변수를 private로 설정했을 때 getter와 setter를 제공한다면 외부로 노출하는 셈이다.

  • 객체와 자료구조를 반반 섞은 잡종 구조는 피하는 것이 좋다.


TIL (Today I Learned) 날짜

2024. 09. 01


오늘 읽은 범위

  • 6장. 객체와 자료 구조


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

  • 어째서 수많은 프로그래머들은 클래스에서 속성을 비공개로 정의하고 Getter와 Setter를 공개해 비공개 변수를 외부에 노출할까?

  • 객체

    • 추상화 뒤로 자료를 숨긴 채 자료를 다루는 함수만 공개한다.

    • 개발자는 객체가 포함하는 자료를 포현할 가장 좋은 방법을 심각하게 고민해야 한다.

    • 아무 생각 없이 조회/설정 함수를 추가하는 방법이 가장 나쁘다.

  • 자료구조

    • 자료를 그대로 공개하며 별다른 함수는 제공하지 않는다.

  • 객체와 자료구조의 반대되는 성질

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

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

  • 디미터 법칙

    • 클래스 C의 메서드 f는 다음과 같은 객체의 메서드만 호출해야 한다.

      • 클래스 C

      • f가 생성한 객체

      • f 인수로 넘어온 객체

      • C 인스턴스 변수에 저장된 객체


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

  • 객체와 자료구조 그 둘을 구분하여 생각해본 적이 없다. 어쩌면 그동안 내가 작성했던 Class는 책에서 표현하는 잡종 구조일지 모르겠다. 객체와 자료 구조를 구분하는 것이 꼭 필요한 일인가는 고민을 해봐야겠지만 나누어서 지칭한다면 소통에는 더 편리하지 않을까 라는 생각은 들었다.

  • Q. 객체와 자료 구조 중 어떤 것을 사용하는 것이 더 좋나요? 상황에 따라 다르다면 예시를 들어주세요.

    • 이번 장을 읽으면서 든 생각을 말하기위한 질문이다. 객체와 자료구조가 서로 반대되는 성질을 가지고있다고 설명을 했지만 나는 상황에 따라서가 아니라 객체만 사용하는 것이 더 낫다고 생각이 들었다. 자료구조의 형태는 너무 불리하지않은가? 객체는 강제성을 띄고있다. 이러한 강제성은 개발자가 실수를 하지않도록 도와준다. 물론 자료구조에 비해 새 함수를 추가하는 것이 번거롭지만 실수를 막는다는 사실까지 본다면 더 나은 형태가 아닌가? 다른 개발자 분들의 의견도 듣고싶다.


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

  • 디미터 법칙에서는 C의 메서드 f가 호출하는 메서드의 종류에 대해 설명했다. 그리고 3줄로 나눈 코드에서 ctxt, options, scratchDir이 객체라면 디미터 법칙을 위반한다고 설명했다. 무엇을 어긴걸까? ctxt, options, scratchDir은 각각의 객체이고 getter는 각 객체의 메서드로 실행했다. 최상위 ctxt 객체의 속성에 다른 객체가 포함되어있겠지만 법칙을 위반한 건 아니지않나 이해가 잘 되지않는다. 객체로서 지켜야할 내부 구조를 공개하지않는다 라는 개념은 지키지 못했지만 여기서 설명한 디미터 법칙은 지킨것이 아닌가? 내가 디미터 법칙을 이해하지 못한 것인가?


오늘 읽은 다른사람의 TIL