코드의 구린내란? 리팩토링이 필요하다고 판단되는 "의심나는 상황"을 빗대어 "구린내" 라는 표현으로 나타낸 것 중복 코드 중복 코드는 똑같은 코드 구조가 두 군데 이상 있을 때 발생하게 됩니다. 이러한 문제는 동일한 부분을 하나로 통일하면 문제가 해결됩니다. 💡 한 클래스의 두 메서드 안에 같은 코드가 있는 경우 이 경우 메서드 추출 기법을 사용하여 중복되는 코드를 빼내어 별도의 메서드를 만든 후 해당 메서드를 두 곳에서 호출하는 방법입니다. public void methodA() { methodC(); } public void methodB() { methodC(); } private void methodC() { // 중복 로직을 담고 있는 코드를 추출 } 💡 두 하위 클래스에 같은 코드가 있는 경우..
리팩토링은 무엇인가? 리팩토링이란 두 가지로 정의할 수 있습니다. 첫째, 겉으로 드러나는 기능은 그대로 둔 채, 알아보기 쉽고 수정하기 쉽게 소프트웨어 내부를 수정하는 일 둘째, 리팩토링 기법을 연달아 적용해 겉으로 드러나는 기능은 그대로 둔 채, 소프트웨어 구조를 변경하는 일 💡 리팩토링의 목적 우리가 만든 소프트웨어를 더 이해하기 쉽고 수정하기 쉽게 만드는 것, 즉 오늘의 기능은 정상적으로 수행하면서 내일의 변경에 유연하게 수용할 수 있도록 만들기 위함이라고 생각합니다. 켄트백의 모자 두 개 이야기 소프트웨어 개발 시 기능 추가 작업과 리팩토링 작업은 구분해야 하지만 우리는 기능 추가 모자와 리팩토링 모자를 번갈아 쓰게 됩니다. 처음 새 기능을 추가하다가, 지금까지 만든 기능의 구조를 변경하면 작업..
도메인이란? 도메인이란 소프트웨어로 해결하고자 하는 문제 영역입니다. 하나의 도메인은 여러 하위 도메인의 협력을 통해 완전한 기능을 제공합니다. 도메인을 하나의 객체라는 관점으로 바라본다면 객체지향의 본질처럼 협력을 통해 공동체를 구성하고, 객체는 고립된 존재가 아닌 하나의 애플리케이션 기능을 수행하기 위해 협력하는 사회적 존재로 바라볼 수 있을거 같습니다. 도메인 전문가와 개발자 간 지식 공유 우리가 소프트웨어로 해결하고자 하는 문제 영역에는 각 분야의 전문가가 있습니다. 예를들어 정산, 배송, 회계 영역에는 전문가가 있습니다. 해당 전문가는 해당 도메인에 대한 지식과 경험을 바탕으로 요구사항을 전달하고, 개발자들은 이런 요구사항을 토대로 개발을 진행합니다. 이때 요구사항을 제대로 분석하지 않으면 코드..
서론 상속의 첫 번째 용도는 타입 계층을 구현하는 것입니다. 타입 계층의 관점에서 부모 클래스는 자식 클래스의 일반화이고 자식 클래스는 부모 클래스의 특수화입니다. 상속의 두 번째 용도는 코드 재사용입니다. 상속을 사용하면 점진적으로 기능을 확장해나갈 수 있습니다. 다만 부모 클래스와 자식 클래스 간에 강하게 결합되기 때문에 변경이 어려워집니다. 우리는 상속을 코드 재사용의 목적이 아닌 타입 계층을 구현하기 위해서 상속을 사용해야 합니다. 타입 객체지향 프로그래밍 언어에서 타입을 이해하기 위해서는 프로그래밍 언어 관점에서의 타입과 개념 관점에서의 타입을 살펴봐야합니다. 타입은 적용 가능한 오퍼레이션의 종류와 의미를 정의함으로써 코드의 의미를 명확하게 전달하고 개발자의 실수를 방지하기 위해서 사용합니다. ..
- Total
- Today
- Yesterday
- spring boot 엑셀 다운로드
- 공간 기반 아키텍처
- 트랜잭셔널 아웃박스 패턴 스프링 부트 예제
- spring boot redisson sorted set
- spring boot poi excel download
- microkernel architecture
- redis sorted set
- @ControllerAdvice
- spring boot redisson destributed lock
- spring boot redisson 분산락 구현
- 레이어드 아키텍처란
- 자바 백엔드 개발자 추천 도서
- spring boot excel download paging
- 람다 표현식
- service based architecture
- spring boot redis 대기열 구현
- pipe and filter architecture
- space based architecture
- transactional outbox pattern spring boot
- 서비스 기반 아키텍처
- java ThreadLocal
- redis 대기열 구현
- spring boot excel download oom
- polling publisher spring boot
- redis sorted set으로 대기열 구현
- JDK Dynamic Proxy와 CGLIB의 차이
- transactional outbox pattern
- 트랜잭셔널 아웃박스 패턴 스프링부트
- java userThread와 DaemonThread
- pipeline architecture
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |