본문 바로가기
반응형

전체 글80

사내 스터디를 마치며 22년 1분기 동안 사내 스터디를 진행했다. 주제는 DDD (Domain Driven Design) 였고 모두가 공통의 주제를 공부하며 우리 코드에 적용해 볼 수 있는 곳과 책에서 배운 예시와 비슷한 지점을 찾아보았다. 책 한 권을 읽는데 생각보다 많은 시간이 걸렸다. 양이 많은 것도 있었지만 점점 어려워지는 난이도와 복잡한 예시들로 인해 여러번 좌절할 뻔했다 .. 그래도 포기하지 않고 모두와 함께 끝까지 달릴 수 있었고 오늘은 그 회고를 작성해 보고자 한다. (이 글은 Eric Evans 의 Domain Driven Design 을 참고해 작성했습니다.) 용어 정리 DDD (Domain Driven Design) 란? 해당 도메인과 일치하도록 소프트웨어를 모델링하는데 중점을 둔 소프트웨어 설계 접근 방.. 2022. 5. 1.
팩토리 메소드 패턴 (Factory Method Pattern) 오늘은 팩토리 메소드 패턴(Factory Method Pattern) 에 대해서 글을 쓰고자 한다. 요즘 Spring 프레임워크를 공부하고 있는데 내가 요즘 듣는 강의와 책에서 공통적으로 해당 패턴을 설명하기에 내 나름대로 정리하고자 한다. 정의 팩토리 메소드 패턴 은 간단하게 설명하자면 객체의 생성 부분을 별도의 클래스로 분리해 캡슐화 시키는 것이다. 상위 클래스에 하위 클래스를 생성하는 부분을 감출수 있고 어떤 객체를 생성할 것인지 하위 클래스가 결정할 수도 있다. 장점 팩토리 메소드 패턴을 통해 객체를 생성하는 코드의 중복을 피할 수 있다. 객체의 생성 로직과 사용하는 로직을 분리해 코드 결합도와 의존성을 낮추고 객체 생성에 대한 책임을 서브클래스에 위임할 수 있다. 예제 UML Class Diag.. 2022. 3. 6.
초보 개발자의 실수노트 만들기 어느새 개발자로 취직한 지 8개월째에 접어들었다. 취직을 하고 신입으로 생활하면서 정말 많은 실수를 했는데 처음에는 메모장에 실수를 기록하다가 너무 체계적이지 못하고 다음에 다시 보기 어려워서 새로 실수 노트를 만들었다. [실수 노트 템플릿] 내가 만든 템플릿인데 혹시라도 누군가 참고하고 싶다면 ... (각자의 상황에 맞게 커스텀해서 사용하면 좋을 듯 !!) 실수 노트에는 순번, 분류, 날짜, 실수한 내용, 해결 방안, 다짐, 참고자료 컬럼을 만들었고 분류와 날짜에는 필터링 기능을 넣어 원하는 분류와 날짜만 골라서 볼 수 있도록 했다. 나는 분류를 좀 큰 틀로 나눴는데 똑같은 쿼리 실수여도 SQL raw query 실수인지 ORM 실수 인지 구분해주었다. 로직이나 코드 실수는 API 쪽에 넣었는데 문법 .. 2021. 12. 12.
[Spring 기초] Spring 3대 요소 (3) Portable Service Abstraction 2021.09.22 - [Java/Spring 기초] - [Spring 기초] Spring 3대 요소 (2) Aspect Oriented Programming 이전 글에 이어 이번에는 Spring 3대 요소 중 세 번째인 PSA (Portable Service Abstraction) 에 대해서 알아보고자 한다. (이번 글도 백기선님의 강의 를 참고해서 정리했다.) PSA 란 무엇인가 ? PSA 란 백기선 님의 말을 빌리자면 '잘 만든 인터페이스' 라고 한다. (처음에는 좀 잘 안 와닿았는데 몇 가지 예시를 보니 이해가 갔다.) 내 이해로는 추상화가 굉장히 잘 된 인터페이스라고 이해했다. 작업 환경이나 기술이 변화더라도 일관된 방식의 접근 방식을 제공하여 의존성을 크게 고려하지 않아도 되는 구조라고 이해했.. 2021. 9. 22.
[Spring 기초] Spring 3대 요소 (2) Aspect Oriented Programming 2021.09.19 - [Java/Spring 기초] - [Spring 기초] Spring 3대 요소 (1) Inversion of Control 이전 글에 이어 이번에는 Spring 3대 요소 중 두 번째인 AOP (Aspect Oriented Programming) 에 대해서 알아보고자 한다. (이번 글도 백기선님의 강의 를 참고해서 정리했다.) AOP 란 무엇인가 ? 직역하자면 관점 지향 프로그래밍 인데 어떤 프로그램에서 핵심 기능이 있다면 부가적인 기능들을 분리해 분리된 기능의 관점에서 기능을 모듈화 하여 설계 및 개발하는 것이다. 핵심 기능과 부가적인 기능들이 분리되어 있기 때문에 핵심 기능의 수정 없이 쉽게 부가 기능을 붙이거나 수정할 수 있고 코드의 재사용성을 높일 수 있다. (AOP 도 역.. 2021. 9. 22.
[Spring 기초] Spring 3대 요소 (1) Inversion of Control 이번엔 갑분 스프링으로 돌아왔다. 스프링을 공부해볼 것이다. 먼저 스프링 필수 3대 개념 중 하나인 Inversion of Control 에 대해서 알아보겠다. Inversion of Control 이란 ? 직역하자면 '제어의 역전' 이라는 뜻이다. 처음에는 이게 무슨 말이지 !? 싶었는데 열심히 이해해본 과정을 글로 남겨보고자 한다. (백기선님의 강의를 보면서 기초를 학습했다.) 샘플 프로젝트 : Github Link (스프링 공식 홈페이지 가이드) 보통 자바에서 객체를 생성하려면 new 키워드로 생성자 함수를 호출하여 객체를 생성할 것이다. class OwnerController { private OwnerRepository repository = new OwnerRepository(); } (내가 .. 2021. 9. 19.
반응형