Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[2주차] Clean_Code_3-4장_김주영 #23

Closed
kjy-asl opened this issue Jun 10, 2024 · 4 comments
Closed

[2주차] Clean_Code_3-4장_김주영 #23

kjy-asl opened this issue Jun 10, 2024 · 4 comments

Comments

@kjy-asl
Copy link
Contributor

kjy-asl commented Jun 10, 2024

"3장에서 한 함수 내에 추상화 수준을 섞으면 코드를 읽는 사람이 헷갈린다. 특정 표현이 근본 개념인지 아니면 세부사항인지 구분하기 어려운 탓이다." 아는 언급이 있는데 사실 이 부분에 대해서는 한번도 고려해본적이 없습니다.
이유는 제가 추상화에 대한 개념이 정확하게 안 잡혀있기 때문인 것 같은데요. 구성원 분들께서 명확한 개념 정립이 되어 있으시다면 간결한 설명 부탁드리겠습니다. 다른 블로그를 읽어봐도 잘 이해가 안 가더라고요..
image
책에서 getHtml() -> PathParser.render(pagePath) -> .append("\n) 단계로 추상화 수준을 언급하고, 위 그림 또한 많은 작업을 하는 함수를 작게 나눠 분리 수준을 다루던데 어떤 느낌인지는 알겠지만 정리가 잘 안되네요. 부탁드리겠습니다.

@GaHee99
Copy link
Contributor

GaHee99 commented Jun 10, 2024

제가 이해한 바로는, getHtml() -> PathParser.render(pagePath) -> .append("\n) 단계에서 추상화 수준을 언급한 것 이라기 보다는,
getHtml을 리펙토링 하는 과정에서, getHtml이 '한가지 일'을 처리하는 과정에서 판단하는 행위들에 대해 추상화 수준을 언급했다고 생각했습니다.

즉 '한가지 일'을 처리하는 중간과정을 따로 함수로 작성해야 하는지(추상화)에 대한 수준을 언급한거라고 생각해요.!

@lee-JunR
Copy link
Contributor

lee-JunR commented Jun 10, 2024

저도 해당 부분이 이해가 잘 되지 않아 제 수준의 언어로 정리해봤는데 도움이 될까 싶어 첨부합니다!

2-2. 함수 당 추상화 수준은 하나로.

함수가 한가지 작업만 수행하려면 함수 내 모든 문장의 추상화 수준이 동일해야함.

추상화 수준이 같다는게 뭐지?

  • "차를 운전한다"라는 함수의 문장들 ("열쇠를 찾는다", "시동을 건다", "기어를 바꾼다", "방향을 조절한다")은 같은 추상화 수준에서 작동한다. 이들은 모두 "차를 운전한다"라는 한 가지 일을 수행하기 위한 구체적인 단계들이다.
  • "열쇠를 찾는다"라는 함수의 문장들 ("가방을 뒤진다", "키 홀더를 확인한다")은 더 낮은 수준의 추상화를 나타낸다. 이들은 "열쇠를 찾는다"라는 한 가지 작업을 수행하기 위한 구체적인 단계들이다.
  • 함수의 추상화 수준을 판단하는 것은 그 함수 내의 문장들이 어떤 수준의 작업을 나타내는지 확인하는 것이다.
  • 함수 내의 모든 문장이 같은 수준의 작업을 나타낸다면, 그 함수는 한 가지 일을 하는 것으로 본다.

-> 그러니 차를 운전한다() 함수에 ("열쇠를 찾는다", "시동을 건다", "기어를 바꾼다", "방향을 조절한다")문장이 들어가야지 추상화가 한단계 낮은 가방을 뒤진다키홀더를 확인한다가 들어가면 안된다는 말이겠지요!

@chuseok
Copy link
Contributor

chuseok commented Jun 10, 2024

코드를 분리했을 때 이 부분에서 이걸 하는게 맞는지 보다 명확하게 보고 이해하기 위해서 인 거 같아요

준렬님이 잘 설명해주신 거 같습니다! 저는 1-2-3-4단계가 있는데 이 단계들을 건너뛰기, 생략하면 안된다 이런 느낌으로 이해했습니다.

@cheongwonyoung
Copy link

함수 로직에서 기능의 수를 각 level로 생각했습니다.
준렬님이 예시로 들어주신 "차를 운전한다"<->"열쇠를 찾는다"가 같은 수준이고, 세부적으로 들어갈 수록 한 단계씩 낮아진다고 이해했습니다.

@kjy-asl kjy-asl changed the title [2주차] Clean_Code 김주영 3-4장 [2주차] Clean_Code_3-4장_김주영 Jun 12, 2024
@GaHee99 GaHee99 closed this as completed Jun 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants