겉보기에는 동작에 문제가 없어 보이지만, 코드 구조나 설계에 문제가 있을 가능성이 있는 코드
버그는 아니지만, 소프트웨어의 품질을 저하시키는 요인이 되므로 리팩토링의 신호로 간주된다.
같은 코드가 여러 곳에 반복될 때. 수정 시 실수 가능성이 높아지고 유지보수 어려움.
한 메서드가 너무 많은 일을 처리하고 있을 때. 읽기 어렵고 재사용이 어려움.
하나의 클래스가 너무 많은 책임을 가질 때. SRP(Single Responsibility Principle) 위반 가능성 있음.
public class User {
private String name;
private String email;
public void login() { ... }
public void logout() { ... }
public void sendEmail() { ... }
public void calculateTax() { ... }
}
=============================================
단일 책임의 원칙 (SRP) 적용
=============================================
public class UserAccount {
public void login() { ... }
public void logout() { ... }
}
public class EmailService {
public void sendEmail(User user) { ... }
}
public class TaxCalculator {
public double calculateTax(User user) { ... }
}
함수나 메서드의 파라미터가 너무 많을 때. 이해하기 어렵고 테스트하기 힘듦.
public void createUser(String name, String email, String phone, String address, int age) { ... }
=============================================
매개 변수를 객체로 묶어주기
=============================================
public class UserInfo {
private String name;
private String email;
private String phone;
private String address;
private int age;
}
public void createUser(UserInfo userInfo) { ... }