목차 1. 클래스 체계 2. 단일 책임 원칙 3. 낮은 결합도와 높은 응집도 4. 클래스는 변경하기 쉬워야 한다. 1. 클래스 체계 클래스를 정의하는 표준 자바 관례에 따르면 다음과 같은 순서이다. static public 상수 > private 변수 공개 함수 > private 함수 비공개 함수는 자신을 호출하는 공개 함수 직수에 넣는다. 추상화 단계가 순차적으로 내려가 가독성이 높아진다. 캡슐화 클래스를 개발할 때 기본적으로 구현을 감추고 외부 객체와 상호작용 하는 부분만 노출한다. 필드를 private으로 제한, 외부의 잘못된 사용을 방지한다. 2. 단일 책임 원칙 (SRP) 클래스는 함수와 마찬가지로 작아야 한다. 작은 클래스는 각자 맡은 책임이 하나며, 변경할 이유가 하나며, 다른 클래스와 협력..
목차 1. 경계란 2. 외부 코드 사용하기 3. 학습 테스트 1. 경계란 프로젝트에서 오픈소스, 라이브러리 같은 외부 코드를 자주 사용한다. 우리 코드는 외부 코드의 인터페이스를 제공받아 사용하는데 제공자와 사용자 사이의 시스템 경계에서는 문제가 생길 소지가 많기 때문에 외부 코드를 우리 코드에 깔끔하게 통합 할 수 있도록 경계를 잘 지어야 한다. 2. 외부 코드 사용하기 캡슐화 외부 코드를 사용하는 부분을 캡슐화해 데이터를 보호하고 외부 인터페이스가 변할 경우 우리 코드에 미치는 영향을 최소화 한다. java.util.Map 인터페이스를 예로 든다. Map sensors = new HashMap(); ... Sensor s = sensors.get(sensorId ); Map 인터페이스가 제공하는 cl..
목차 1. 예외 처리 방식 2. Business Exception 1. 예외 처리 방식 오류 코드보다 예외를 사용하자. 오류 코드를 사용하는 것 보다 예외를 던지는 방식이 더 명확하고 메소드를 호출하는 코드와 처리 흐름이 깔끔해진다. 오류가 발생한 부분에서 Checked Exception을 발생시키고 상위 레벨에서는 예외를 catch 하여 처리하거나 메소드 선언부에 throws를 명시한다. Checked Exception은 예외에 대한 처리가 반드시 필요하기 떄문에 하위 레벨 메소드에서 Checked Exception을 발생시키면 catch 블록이 나오기 까지 모든 상위 레벨 메소드에서 throws 처리를 해주어야 한다. 결국 상위 레벨 메소드에서 하위 레벨 메소드의 디테일에 대해 알아야 하기 때문에 O..
목차 1. 자료구조 vs 객체 2. 객체 - 디미터 법칙 3. DTO 4. Active Record vs Data Mapper 1. 자료 구조 vs 객체 자료 구조(Data Structure) 객체(Object) 데이터 그 자체 비즈니스 로직과 관련 자료를 공개한다. 자료를 숨기고 추상화한다. 자료를 다루는 함수만 공개한다. 변수 사이에 조회 함수와 설정 함수로 변수를 다룬다고 객체가 되지 않는다. (getter, setter) 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있다. 예시 (1) Vehicle - 자료 구조 조회 함수와 설정 함수로 자료를 공개한다. public interface Vehicle { double getFuelTankCapacityInGallons(..
- Total
- Today
- Yesterday
- Stream
- HTTP 헤더
- 이벤트 스토밍
- ATDD
- 육각형 아키텍처
- named query
- Git
- H2
- 학습 테스트
- spring rest docs
- 폴링 발행기 패턴
- Spring
- 스프링 예외 추상화
- Ubiquitous Language
- 클린코드
- Spring Data JPA
- 트랜잭셔널 아웃박스 패턴
- Spring Boot
- java8
- 계층형 아키텍처
- clean code
- 마이크로서비스 패턴
- 도메인 모델링
- mockito
- TDD
- MySQL
- 스프링 카프카 컨슈머
- http
- JPA
- kafka
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |