인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

Inflearn Community Q&A

bk110010803's profile image
bk110010803

asked

Real-world! Spring Boot and JPA Utilization 2 - API Development and Performance Optimization

Teaching Materials

의미있는 이름...

Written on

·

165

1

안녕하세요.

실무적인 부분을 말씀해주시는 부분이 도움이 많이됩니다.

덕분에 클린코드 책까지 보고있습니다만
의미 있는 이름을 짓는다는게 이렇게나 답이 없다는걸 세삼 느낍니다. 강의를 들으면서 병행한 토이 프로젝트를 쭉보는데
이름이 진짜 중구난방이더군요....

뭔가 가이드가 있지 않을까 해서 찾아보면
심지어 이름짓는 사이트도 있고 github이나 블로그등
다양한 정보가 있지만 이름짓는 시간은 줄이들지를 않더군요.

사실 경험과 시행착오가 해결해줄 일이지만
이름 변경하는데 하루를 소비했지만 
전혀 만족스럽지가 못하네요.

어떤한 조언이라도 부탁드립니다.

추가로...
지금도 너무 훌륭한 강의이고,
앞으로도 만드실 강의는 필수로 듣기위해 기다리고있습니다.
사실 본 강의도 계속 기다렸었지요.

강의도중 '대충' 이라는 단어는 아쉽게 다가옵니다.

강의를 들으시는 많은 분들의 스펙트럼은 다양하겠지만
김영한님은 사소하게 생각하시는게 크게 다가오는 저같은 사람도 있지요.

샘플 이름이나, 패키지, 소스 위치, 사용법 등
 조금만더 실무적인 입장에서 신경써주신다면
저같은 사람에게는 크게 도움이 될것임에 틀림없습니다.

강의는 리펙터링이 불가하니까요...

오해는 없으시길 바랍니다~^^


javaJPAspring-bootspring

Answer 1

8

yh님의 프로필 이미지
yh
Instructor

안녕하세요 bk11001님

토이 프로젝트를 진행하면서 이름을 짓는데, 답답하신 마음이 충분히 이해가 됩니다.

저도 개발 시간의 대부분을 이 이름 짓는데 보내고, 팀에 정말 개발을 잘하는 개발자 분들도, 이 이름 때문에 한참 고민합니다. 농담이 아니라 정말로 개발 시간의 절반은 이름 짓는데 보냅니다. ㅠㅠ 저는 지금도 이름을 짓는데 어려움을 겪고 있고, 앞으로도 계속 그럴 것 같습니다. 여러가지 이유가 있지만 우리가 영어권에 사는 것이 아니기 때문에, 영어의 뉘양스를 정확하게 파악하지 못하는 점도 크다고 봅니다. 그리고 영어로 유창하게 써도, 그 코드를 읽는 분들이 영어권이 아니기 때문에, 오히려 더 힘들 수 도 있구요.

시중에 코드 관련해서 다양한 책들이 있으니, 다양한 책들을 보시는게 그나마 도움이 되실꺼에요.

그렇다고 제가 명확하게 어떤 기준을 가지고 있냐고 하면, 저도 그렇지 않습니다. 단순하게 현재 문맥에서 함께 일하는 동료가 쉽게 읽을 수 있는 코드라면 좋은 코드라 생각하고, 계속 고민하면서 시간을 보내는 편입니다.

추가로 강의 도중 대충이라는 단어를 사용하는 부분에서 아쉬움을 느끼시는 이유는 아마 단어 그 자체보다는, 강의를 통해서 실무의 샘플 이름이나, 패키지 구조, 소스 위치등을 더 자세히 보고 싶으셔서 아쉬움을 느끼신 것이라 생각합니다. 저도 과거에 그 부분이 너무 궁금해서 정말 많은 소스코드를 찾아 다니고, 고민도 많이 한 부분이어서 말씀해주신 의견에 충분히 공감이 됩니다.

사실 대충이라는 단어를 사용한 이유는 이름, 패키지, 소스 위치등이 중요하지 않아서 그런 것이 아닙니다. 제가 가장 관심있고, 중요하게 여기는 것들이 바로 말씀해주신 이름, 패키지, 소스 위치등입니다. 이것이 단순해보여도 사실은 애플리케이션 아키텍처와 아주 깊이있게 관계되어 있는 부분이기 때문이지요.

뭔가 딱 정답이 있어서 실무에서는 이렇게 이름을 적고, 패키지는 여기에 두시면 됩니다! 라고 말씀드리면 가장 좋겠지만 그런데 문제는 이런 부분이 단순해보여도 정말 단순하지 않다는 것이 문제입니다. 패키지 구조에서 DTO를 어디에 두는게 좋은가? 서비스와 리포지토리를 함께 묶는가 좋은가? 아니면 따로 패키지를 분리하는게 좋은가? 엔티티와 리포지토리를 같이 두는게 좋은가? 등등 애플리케이션 아키텍처를 어떤 관점으로 적용할 것인가에 따라서, 패키지 구조 자체가 완전히 달라집니다.

예를 들면 다음과 같은 아키텍처가 있습니다. (클린 아키텍처에서 참조)

* 계층 기반 패키지

* 기능 기반 패키지

* 포트와 어댑터

* 컴포넌트 기반 패키지

어떤 기반 아키텍처를 선택하는가에 따라서 패키지 구조가 완전히 달라집니다. 그리고 클래스나 패키지 이름도 어느정도 영향을 받게 되어있습니다. 그리고 사실 클린 아키텍처에서 설명한 이 구조들 보다 더 많은 구조들이 있습니다.

강의에 이런 부분들을 함께 설명해드리면서 진행하면 더욱 좋겠지만, 사실 단순히 패키지 하나만 설명해도 강좌하나에 담기 힘들 정도로 많은 내용이 녹아있습니다.

강의라는 것은 모든 것을 가르치기 보다는 목표가 명확한 강의가 좋은 강의라 생각합니다. 그런 관점에서 이 강의에서 중요하게 목표를 가지고 전달하려는 부분과 아닌 부분을 나누어 설명하려는 노력으로 봐주시면 좋겠습니다.

언젠가 여유가 되면 아쉬워 하셨던, 이름, 패키지, 소스 위치를 주제로 한번 모아서 강의를 준비해보겠습니다^^

항상 응원해주셔서 감사합니다.

bk110010803's profile image
bk110010803

asked

Ask a question