객체지향5 객체지향 프로그래밍에서 왜 역할/책임/협력을 계속 이야기할까? 우리가 ERD를 먼저 설계하고, 속성 중심으로 객체를 정의한 뒤 개발을 시작하면 어떤 문제가 발생할까?가장 큰 문제는 해당 객체가 어떤 문맥(context)에서 사용될지를 고려하지 않은 채 데이터를 설계하게 된다는 점이다. 이렇게 되면 이후 개발 과정에서 억지로 데이터를 껴맞추는 상황이 발생하게 된다. 예를 들어, 복잡한 조인을 포함한 2중, 3중의 SQL을 작성하고 있다면 이미 냄새가 풍기고 있는 셈이다. 객체를 똑똑하게 만들기 위해서는 객체가 사용될 문맥, 즉 사용 시나리오를 고려해야 한다. 이 지점에서 책임(responsibility)이라는 개념이 등장한다.그렇다면 여기서 말하는 문맥(context)이란 무엇일까? 이를 이해하기 위해 절차지향 방식의 문제점부터 다시 짚어보자.절차지향 프로그래밍의 한.. 2025. 4. 1. Java 에서 패키지(Package) 라는 것을 왜 사용해야만 할까? 자바에서 사용하는 패키지는 왜 사용할까? 일단 Java 에서 Package 라고 하면 다음과 같이 생각하는 것이 일반적이다.패키지(Package) 패키지란? 클래스의 묶음으로 클래스를 용도별이나, 기능별로 그룹화 [참고 - https://wikidocs.net/231]이것을 고민했던 이유는 다음과 같습니다.이걸 보면, Zzzz 클래스는 아무런 패키지없이도 만들 수 있습니다. 그런데 패키지가 왜 필요한거지?멘토링을 진행하면서 '이렇게 패키지 구조를 만들었는데, 적절한가요?' 라는 질문을 정말 많이 받았는데요. 이 질문에 답변을 하는 과정에서 패키지 구조만 보고 내가 어떻게 적절하다고 판단을 하지? 라는 생각을 했습니다. 적어도 옛날에 읽었던 클린 소프트웨어 책에서 패키지는 이렇게 하는거야! 라는 내용을 읽.. 2024. 10. 3. 왜 사람들은 빈약한 도메인 모델을 만들어 활용할까? 왜 사람들은 빈약한 도메인 모델을 만들까?조영호님의 인프런 강의를 들으며 좋은 인사이트를 많이 얻을 수 있었는데, 강의를 모두다 수강한 뒤에 궁금한 것이 있었다.우리 선배개발자님들은 왜 빈약한 도메인 모델을 관례처럼 만들까? 왜그럴까?도메인 계층에는 객체지향 프로그래밍을 해야된다는 것을 머리속으로는 알고는 있지 않을까? 궁금함을 찾을 수 없어, 조영호님에게 직접 물어보았다.왜 선배개발자님들은 빈약한 도메인 모델과 트랜잭션 스크립트 패턴을 작성하게 되었을까?현 시점에 우리의 선배개발자님이 이렇게 된 배경에는 2가지가 있을 수 있다고 조심스럽게 조영호님께서 말씀해주셨다.하나는 개발을 배우거나 실무에서 참고하는 기존 코드들이 이미 절차적으로 작성되어 있기 때문에 많은 사람들이 이 방식을 그대로 답습하고 있기 .. 2024. 9. 22. 반버논이 말하는 Repository 란? 책, 이벤트 주도 설계 내용과 저의 의견을 섞어 내용을 적어내려갑니다. 들어가기 저에게 Repository 라는 말은 Android 을 개발 할때도 MVVM 패턴을 언급하면서 Repository 라는 용어가 처음 등장했습니다. 이후에 JPA를 학습하면서 Repository 라는 용어에 대해서 좀 더 친숙하게 다가왔고, 처음에는 단순하게 '어떤 저장소' 라는 의미로 다가왔습니다. 그러나, 도메인 주도 개발을 학습하면서 Repository 에 대해서 좀 더 깊이 있는 고찰을 할 수 있었습니다. 그럼 반버논의 책 DDD에서는 Repository 을 무엇이라 정의했을까요? Repository? 무슨 의미인가? 앞서 언급했던 Repository 라고 하면 딱 떠오르는, 그 의미 저장소. DDD에서도 Reposit.. 2020. 9. 15. [동영상 정리]의존성을 이용해 설계 진화시키기 - 조영호 님 의존성을 어떻게 관리하는가? 그것이 핵심☢️ 의존성의 정의란 무엇일까? A가 B에 의존할수록 위 그림과 같이 점선으로 그린다. 이 그림의 의미는 B가 변경될 때 A도 같이 변경 될 수 있다. 라는 것을 의미한다. 그러므로, B가 뭐가 됐던 A가 같이 변경 될 수 있음을 의미합니다. B클래스의 변경에 따라서 A에 영향을 줄수 또는 안줄 수도 있다. 클래스 의존성의 종류 패키지 의존성 패키지에 포함된 클래스 사이의 의존성 import에 다른 패키지의 이름이 있다면 디팬던시가 있다고 생각하면 된다. 설계 할 때 좋은 규칙이 몇가지 있다. 양방향일 경우, 싱크를 맞추는데- 비용이 많이 든다. 패키지 세계에 사이클이 돈다라는 것은 하나의 패키지라고 봐야 한다. 의존성을 가장 쉽게 이해할 수 있는 방법은 역시 코드.. 2020. 8. 21. 이전 1 다음