본문 바로가기

java18

05. if-else, if-switch 문의 분류 코드를 하위 클래스로 만들기 특정 조건(상태)에 따라, 값을 다르게 응답해줘야 하는 메서드가 많은 경우 리팩토링 가능한 방법 if문으로 분기치는 것이 아닌 특정 조건(상태)에 따른 하위 클래스를 작성하고, 하위클래스에 메서드의 로직을 구현하여 if문 없는 로직으로 구현 가능함. 새로운 조건(상태, 아래 예시에서는 VIP Customer)가 추가되면 다른 java 파일에 상속받은 하위 클래스를 생성하고 로직 구현하면 되어서 확장성은 좋고 기존 코드에서의 변경에는 닫혀있는 방법임. if - else if, switch 문으로 분류 코드를 사용할 때 발생 가능한 문제점 조건 추가 시 조건에 따른 if 문 지속 추가 필요 특정 조건일 때 로직 수정/추가 되는 경우 해당 타입 관련있는 여러 메서드 if문 분기 부분 에서 해당 내용 수정해야 .. 2023. 2. 8.
04. 분류 코드를 클래스로 만들기 분류 코드를 사용할 때의 문제점 기본 타입 분류 코드 : 객체의 종류를 특정 값으로 나타낸다 BOOK:0, TOY:1, BREAD:2, APPLE:3 등 실수로 정의 하지 않은 값이 들어갈 수 있음 다른 그룹의 분류 코드와 혼란 일으킬 가능성 존재 컴파일시에 정의되지 않은 코드 넣어도 에러 발생하지 않음. 아래는 안 좋은 예시 public static final int BOOK = 0; public static final int FOOD = 1; public static final int TOY = 2; new Category(100); // 문제 부분, 100 값은 정의되어 있지 않아서 오류지만 컴파일 에러 없음 리팩토링 순서 - 분류 코드를 클래스로 치환하기 새로운 분류 코드 클래스를 작성하여 기존 .. 2023. 2. 8.
03. null 객체 사용 null 객체 사용시 문제점 객체의 null 여부를 확인하는 코드가 너무 많은 경우 null 체크 적다면 리팩토링 안 해도 됨 아무것도 안하는 객체를 만들어 사용함으로 null 확인 코드를 줄인다. 리펙토링 단계 null 객체 클래스를 작성한다. 기존에 null을 체크하는 클래스의 하위 클래스로 생성 해당 클래스에 isNull() 이라는 null 체크하는 메서드 구현, 기존 클래스는 false, null 클래스는 true로 반환하게 한다. null 치환하기 null 코드 부분을 isNull() 메서드로 치환한다. null 객체 클래스를 재정의하여 조건 판단진행 isNull() 메서드를 사용하는 제어문을 찾아서 다음과 같이 수정 AS-IS package introducenullobject.before; p.. 2023. 2. 7.
02. 제어를 위한 플래그 삭제 SimpleDataBase 예제 리펙토링 1단계 후 (이상한 변수명 바꾸기) 코드를 날린다고 해서 모든 변수들을 안 쓰는 것이 아니기 때문에 이상한 변수명 바꾸는 작업 수행하여야 하고, 롤백 필요한 케이스가 필요할 수 있기 때문에 단계를 나눠서 리팩토링을 진행해야 한다. AS-IS package removecontrolflag.before; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.io.Reader; import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class SimpleDat.. 2023. 2. 7.