스터디 5

[Effective Java] Chapter 5

Chapter 5 제네릭 제네릭을 지원하기 전에는 컬렉션에서 객체를 꺼낼 때마다 형변환을 했다. 그래서 누군가 실수로 엉뚠한 타입의 객체를 넣어두면 런타임에 형변환 오류가 나곤 했다. 반면, 제네릭을 사용하면 컬렉션이 담을 수 있는 타입을 컴파일러에게 알려주게 된다. 그래서 컴파일러는 알아서 형변환 코드를 추가할 수 있게 되고, 엉뚱한 타입의 객체를 넣으려는 시도를 컴파일 과정에서 차단햐여 더 안전하고 명확한 프로그램을 만들어 준다.Item 26 로 타입은 사용하지 말라제네릭 클래스, 제네릭 인터페이스: 클래스와 인터페이스 선언에 쓰이는 타입 매개변수제네릭 타입: 제네릭 클래스와 제네릭 인터페이스를 통틀어 칭한다 각각의 제네릭 타입은 일련의 매개변수화 타입을 정의한다. 먼저 클래스 이름이 나오고, 이어서..

[Effective Java] Chapter 4

Chapter 4 클래스와 인터페이스 클래스와 인터페이스는 자바 언어의 심장과도 같다. 그러니까 열심히 하자.item15 클래스와 멤버의 접근 권한을 최소화하라 어설프게 설계된 컴포넌트와 잘 설계된 컴포넌트의 가장 큰 차이는 바로 클래스 내부 데이터와 내부 구현 정보를 외부 컴포넌트롤부터 얼마나 잘 숨겼느냐다. 정보 은닉, 혹은 캡슐화라고 하는 이 개념은 소프트웨어 설계의 근간이 되는 원리다.  정보 은닉의 장점은 다음과 같다.시스템의 개발 속도를 높인다.시스템 관리 비용을 낮춘다.정보 은닉 자체가 성능을 높여주지는 않지만, 성능 최적화에 도움을 준다.완성된 시스템을 프로파일링해 최적화할 컴포넌트를 정한 다음 다른 컴포넌트에 영향을 주지 않고 해당 컴포넌트만 최적화할 수 있기 때문이다.소프트웨어의 재사용..

도메인 주도 개발 시작하기: DDD 핵심 개념 정리부터 구현까지 - 최범균

1. 개요 FLOWBIT 프로젝트를 끝내고 같은 팀원인 형님의 추천을 받아 DDD 스터디를 시작하였다. 처음 읽었을 때는 그저 클린 코드에 관한 서적 같은 느낌이 들었지만, 본격적으로 애그리거트의 개념이 나오는 순간 생각보다 정말 많은 시간이 필요하겠다는 생각이 들었다. 퇴근을 하고 내 몸둥아리가 맘에 들지 않아, 꾸준히 운동을 하기로 마음을 먹었기 때문에 퇴근을 하고 집에와서 잠을 자기 전까지 한 3시간 정도의 시간이 있었다. 씻는 시간까지 생각하면 한 2시간에서 2시간 30분 정도...? 주말이 있기에 다행이었지 지금 생각해보면 어떻게 완독을 했는지 싶다... 2. 본론 책 제목에 맞게 기본적인 부분 부터 심화된 부분까지 설명된 책이라고 생각된다. 구현에 대한 세세한 부분이 도메인 설계부터 나오기 때..

독서록 2024.03.24

[DDD] chapter 10

Chapter 10 10.1 시스템 간 강결합 문제 외부 서비스를 사용할 때 발생할 수 있는 문제점 트랜잭션 처리가 애매해진다. 성능이 비교적 감소한다. (외부 서비스 성능에 직접적인 영향을 받게 된다.) 위의 문제를 해결하는 방법은 이벤트를 사용하는 것이다. 10.2 이벤트 개요 이벤트란? 과거에 벌어진 어떤 것. 사용자가 암호를 변경했을 때 > "암호를 변경했음 이벤트"가 벌어졌다고 할 수 있다. 사용자가 주문을 취소했을 때 > "주문을 취소했음 이벤트"가 벌어졌다고 할 수 있다. 도메인의 상태 변경과 관련된 요구사항들을 이벤트를 통해 구현할 수있다. "주문을 취소할 때 이메일을 보낸다."라는 요구사항에서 "주문을 취소할 때"는 주문이 취소 상태로 바뀌는 것을 의미하므로 "주문 취소됨 이벤트"를 이용..

programming/DDD 2024.03.09

[DDD] chapter 1

chapter 1 1.1 도메인이란? 도메인: 소프트웨어로 해결하고자 하는 문제 영역 한 도메인은 다시 하위 도메인으로 나눌 수 있다. 하나의 하위 도메인은 다른 하위 도메인과 연동하여 완전한 기능을 제공한다. 특정한 도메인을 위한 소프트웨어라고 해서 모든 기능을 직접 구현하지는 않는다. 하위 도메인을 어떻게 구성할지 여부는 상황에 따라 달라진다. 도메인마다 고정된 하위 도메인이 존재하는 것은 아니다. 1.2 도메인 전문가와 개발자 간 지식 공유 요구사항의 중요성 개발자는 요구사항을 분석하고 설계하여 코드를 작성하고 테스트하고 배포한다. 요구사항을 처음부터 제대로 설계하지 않으면 코드를 수정해야한다. 잘못 개발한 코드를 수정하는 것은 많은 비용이 소모된다. 요구사항을 올바르게 이해하고 설계하는 방법 개발..

programming/DDD 2024.01.13