Eighteeen / CleanCode_Book_Study

📚 클린코드 북 스터디 📚
4 stars 0 forks source link

그래서 저자는 6장에서 뭘 말하고 싶은거지? #12

Closed deepredk closed 2 years ago

deepredk commented 2 years ago

저자가 당연히 알거라는듯이 말하는 '자료 구조', '객체'가 너무 생소한 개념이지 않아? 우리가 아는 '자료 구조', '객체'의 뜻이랑은 너무 달라

자료 구조는 자료를 그대로 공개하고, 별 다른 함수를 제공하지 않는다. 객체는 자료를 숨긴 채 자료를 다루는 함수만 공개한다.

이런 식으로, 저자가 말하는 '자료 구조' 클래스가 뭐고 '객체' 클래스가 뭔지 간접적으로 드러나긴 해.

근데 당연한 개념을 소개하듯이 말하니까, 이게 그냥 당연한 개념인건지 아니면 저자가 생각하는 클래스 설계는 이래야 한다고 생각하는건지 헷갈리네

추측을 해보자면 아마 저자는 클래스는 '객체' 또는 '자료구조' 형태로만 만들어야 한다고 주장을 하는게 아닐까 싶어 (왜냐면 '자료구조', '객체' 라는 단어를 저자처럼 사용하는 예를 단 한번도 본 적이 없음)

6장에서 저자가 하고 싶은 말은

  1. 클래스는 '자료구조' 또는 '객체' 형태로만 만들어야 한다.
  2. 새 함수를 쉽게 추가하고 싶다면 '자료구조' 형태로, 새로운 자식 클래스를 쉽게 추가하고 싶다면 '객체' 형태로 만들어라 (또는 적절히 섞어라)
  3. '객체' 형태로 만들때는 디미터 법칙을 지켜라

이거 인거지

너네 생각은 어때?

sookyeonghwang commented 2 years ago

위의 말 모두 동의해요.

1. 클래스는 '자료구조' 또는 '객체' 형태로만 만들어야 한다.
2. 새 함수를 쉽게 추가하고 싶다면 '자료구조' 형태로, 새로운 자식 클래스를 쉽게 추가하고 싶다면 '객체' 형태로 만들어라 (또는 적절히 섞어라)
3. '객체' 형태로 만들때는 디미터 법칙을 지켜라

이번 장 마지막 결론에서 저자가 하고 싶은 말이 모두 요약되어 있다고 생각합니다. "어떤 시스템을 구현 할 때 클래스 설계는 이래야 한다"고 말하고 싶은 것 같아요.

WinningBean commented 2 years ago

정리한 문장 중 1번과 같은 얘기를 계속해서 하고 있다고 생각해요. 잡다한 구조는 가져가지 말라고 말하는 것처럼 느껴졌어요. 2번과 3번 또한 얘기하는 바가 같은 것 같지만 '자식 클래스' 를 쉽게 추가하고 싶다는 말로 국한될 수 있는지 얘기해보면 좋을 것 같아요.

deepredk commented 2 years ago
  1. 클래스를 설계하는 방법은 '객체' 또는 '자료구조'로 나뉜다
  2. 새 함수를 쉽게 추가하고 싶다면 '자료구조' 형태로, 새로운 자료구조를 쉽게 추가하고 싶다면 '객체' 형태로 만들어라 (또는 적절히 섞어라)
  3. '객체' 형태로 만들때는 디미터 법칙을 지켜라

'또는 적절히 섞어라'는 잘못된 정리 '자식 클래스 -> 자료구조' 명확한 표현

deepredk commented 2 years ago

'자식 클래스' 를 쉽게 추가하고 싶다는 말로 국한될 수 있는지 얘기해보면 좋을 것 같아요. => 자료구조를 '자식 클래스'라고 칭하여 생긴 오해에서 나온 의견이였음