OCP와 전략패턴 if-else문의 문제점 변경 또는 확장이 될 수록 코드가 복잡해진다. 리팩토링 시 리팩토링 부분을 찾는데 점점 오래 걸리게 된다. 실수로 추가하지 않고 누락하는 부분이 생길 가능성이 있다. 위의 총 3가지 문제점을 한마디로 표현하지만 유지보수가 점점 어려워진다 라고 정의할 수 있겠습니다. 계속되는 기능 추가로 복잡도는 증가하면서 추가 수정이 힘들어 지는데, If-else를 사용하게 된다면 점점 커져서 한 메서드에 수백 줄 이상으로 빠르게 증가할 가능성이 있게 되면서 코드는 복잡하게 됩니다. OCP란? Open-Closed Principle 개방 폐쇄 원칙 소프트웨어 구성 요소(컴포넌트, 클래스, 모듈, 함수 등)는 확장에 대해서는 개방되어 있어야 하며 변경에 대해서는 폐쇄되어야 한다...
Backend/Java
Jacoco 설정하기 예제코드 Jacoco란? Java 코드의 커버리지를 체크하는 라이브러리다. 커버리지 결과를 눈으로 보기 좋도록 html, xml, csv 같은 report로 생성한다. 또한 테스트 결과가 내가 설정한 커버리지 기준을 만족하는지 확인하는 기능도 있다. JaCoCo 플러그인 추가 apply plugin: 'jacoco' jacoco { toolVersion = '0.8.6' // 현재 최신 버전 } 버전을 명시하면 jaCoCo를 사용할 수 있다. 이걸 추가하고 gradle 새로고침을 실행하면 아래와 같이 jaCoCo Task가 생성된다. JaCoCo Gradle Task jacocoTestReport 커버리지 결과를 사람이 읽기 좋은 형태의 리포트(html,..
lombok 사용법 - 2(@EqualsAndHashCode, @data, @NonNull, @Cleanup, Val, @Value, @builder, @SneakyThrows, @Log, @Synchronized) 예제코드 @EqualsAndHashCode Equals()와 HashCode()를 만들어주는 어노테이션입니다. import lombok.AllArgsConstructor; import lombok.EqualsAndHashCode; @AllArgsConstructor @EqualsAndHashCode public class Member { private String email; private String name; private int age; } public class Member { pri..
Lombok 사용법 1 (XXXArgsConstructor, Getter, Setter, ToString) 예제코드 Lombok Dependecy 설정 configurations { compileOnly { extendsFrom annotationProcessor } } compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' Configurations : 의존성 그룹으로 dependencies를 통해 의존성 그룹에 라이브러리를 추가해주는 개념이다. complieOnly: 컴파일 시 필요한 라이브러리이다. extendsFrom : 컴파일 시 형식을 확장한다는 의미다. annotat..
Enum 필드로 클래스와 메소드를 넣어 보는 예제입니다. 주문, 결제, 종료라는 기능이 있다고 해봅시다. 원하는 기능을 입력했을때, 그 기능에 맞는 메소드를 실행시키도록 하겠습니다. Field에 Class 넣기 RunController package enumfield.ex.controller; public interface RunController { void run(); } OrderContoller package enumfield.ex.controller; public class OrderController implements RunController { @Override public void run() { System.out.println("주문을 받습니다."); } } PaymentControll..