[강의 질문] 메서드와 추상화
61
작성한 질문수 24
메서드와 추상화 관련해서 질문이 있습니다.
메서드가 2가지 이상의 일을 하면 구체적인 내용의 유추가 어렵기 때문에 더 작은 단위의 메서드로 쪼개고 더 큰 맥락 안에서 포괄적인 의미를 담는 메서드 명 변경하라고 말씀 주셨는데
더 작은 단위의 메서드로 쪼개지 않고 메서드 명만 포괄적인 의미를 잘 담아서 표현하게 되도 괜찮은 걸까요?
즉, 아래와 같이 메서드 단위로 분리 하지 않아도
메서드 명만 하나의 주제를 나타내면 되지 않을까 싶어서 질문 드립니다.
void 산책하면서 돈쓰기() {
우빈이는 산책하다가 은행해서 현금을 인출했다.
서점가는길에 아이스크림을 사먹었다.
남은돈으로 서점에서 가서 책을 구입하였다.
}
답변 2
1
안녕하세요, JuNu 님!
네, 항상 선택은 개발자의 몫입니다.
'어느 정도까지 메서드를 분리해야 해?'라는 질문에는 '읽는 사람의 이해를 돕는 방향으로'라고 답할 수 있겠습니다.
만약 도메인의 맥락상, 그리고 현재 로직의 흐름상, 설계한 메서드의 구조가 충분히 의도를 전달하고 있지 못하다면, 메서드 분리를 통해 추가적인 의미를 전달할 수 있을 거예요. 반대로 적절한 추상화 단계를 가지고 있다고 판단한다면 거기서 메서드 추출을 멈출 수도 있겠죠.
정해진 답은 없으니 상황에 따라 잘 판별하시면 되겠습니다.
도움이 되셨기를 바랍니다.
감사합니다. 🙂
0
안녕하세요, 인프런 AI 인턴입니다.
JuNu님께서 올리신 메서드와 추상화에 관한 질문에 대해 답변드리겠습니다.
메서드를 쪼개지 않고 포괄적인 메서드명만으로 표현하는 것에 대해 고민이 있으신 듯합니다. 이와 관련하여 메서드의 책임을 명확히 하고 코드의 가독성을 높이는 방법에 대해 이해를 돕고자 몇 가지 링크를 추천해드리겠습니다.
- 메서드의 책임 분리 및 네이밍:
메서드를 더 작은 단위로 쪼개는 이유는 각 메서드가 단일 책무를 갖게끔 유도함으로써 코드의 가독성과 유지보수성을 높이기 위한 것입니다. 메서드 네이밍을 통해 의도를 드러내는 것도 중요하지만, 여러 책임을 가진 메서드는 코드의 복잡성을 증가시킬 수 있습니다. 이런 경우 더 작은 단위로 메서드를 분리하는 것이 좋습니다.
- 관련된 내용을 다룬 질문으로 안녕하세요. 객체의 책임 분리와 관련해서 질문이 있습니다.을 참고하시기 바랍니다. 이 질문은 객체의 책임 분리와 클래스 설계 측면에서 가이드를 제공합니다.
- 가독성을 갖춘 추상화:
주제를 포괄적으로 설명하는 네이밍도 중요하지만, 메서드를 명료하게 유지하고 각 메서드가 하나의 일을 담당하도록 하기 위해 메서드를 나누는 것이 선호되는 방법입니다. 네이밍만으로 책임을 숨기려다 보면 오히려 코드의 복잡성을 늘릴 수 있으므로, 메서드의 목적을 명확히 하고 코드가 자기 설명적이도록 하는 것이 장기적으로 유지보수에 유리합니다.
JuNu님의 질문은 많은 개발자가 코드를 쉽게 읽고 유지할 수 있도록 하려는 고민에서 비롯된 것 같습니다. 이 답변이 JuNu님께 도움이 되기를 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
[강의 질문] 메서드 선언부
0
90
1
DIP 개념에 대한 질문입니다.
0
64
1
만약 보드를 이용한 게임의 종류가 더 다양해진다면 어떻게 될 수 있을지에 대한 고민
0
86
2
DIP 설명 후반부에 IOC에 대한 질문 드립니다.
0
79
2
안녕하세요 ! 혹시 자바가 아닌 다른 객체지향 언어를 알고있어도 강의를 들어도 괜찮을까요 ?!
0
71
1
안녕하세요 메서드명 때문에 고민이 있어서 질문드립니다.
1
64
2
자바 record 사용에 대해서 질문 드립니다!
0
128
2
강의 내용 정리 및 자료 제작 툴 문의 드립니다.
0
136
2
사용할 변수 가깝게 선언하기 질문
0
93
1
오버 엔지니어링
0
149
2
학습용 java/spring 오픈소스 추천
1
367
2
중복된 메서드 줄이는 방법
0
184
2
MarketPlace에서 Sonarlint 검색이 안됩니다.
0
417
3
isLandMineCell() 메서드 질문
0
209
1
Cell[][]BOARD 매개변수받기
0
153
2
ConsoleInputHandler에서 왜 final붙여야 하는지
0
193
1
정적 생성자 메서드 of, from
0
264
2
Getter관해서
0
148
3
이름 바꾸기
0
129
2
stack 대신 queue 를 사용해 bfs 로 변경해도 되나요??
0
164
2
현업에서 ISP를 도입하려는데 인터페이스 설계에 있어서 의문이 있습니다.
0
208
2
null을 가질 수 있는 값을 인자로 넘겨야 하는 경우
0
251
3
리팩토링을 하고 난 뒤 다시보면 오히려 더 복잡해 보이는것 같은 느낌입니다..
0
254
2
조합 관계에 대해 질문있습니다.
0
166
2





