삼성전자

삼성전자

개발팀 리뷰

위 내용은 삼성전자 전 • 현 재직자의 응답 결과입니다.

기술 스택

언어

Java

C++

c언어

재직자가 좋아한 글

🕊️ Java Spring Boot에서 If-Else문 줄이기  |  If-else 문은 흔하지만 남용되면 복잡하고 유지보수가 어려운 코드로 이어질 수 있습니다. 이 글에서는 Java Spring Boot 프로젝트에서 if-else 문을 줄이기 위한 다양한 전략을 탐구하여 코드를 더 모듈화하고, 유지보수하기 쉽고, 읽기 쉽게 만드는 방법에 대해 설명하겠습니다.   If-Else 문을 줄이는 전략 * 전략 패턴(Strategy Pattern) * Enum 사용 * 다형성(Polymorphism) * 람다 표현식과 함수형 인터페이스 * 명령 패턴(Command Pattern) * 가드 절(Guard Clauses) 1. 전략 패턴 전략 패턴은 알고리즘의 가족을 정의하고, 각각을 캡슐화하며, 이들을 상호 교환 가능하게 만듭니다. 여러 가지 방법으로 특정 작업을 수행해야 할 때 유용합니다.   예제: 결제 처리 시스템 먼저 PaymentStrategy 인터페이스를 정의합니다: public interface PaymentStrategy { void pay(double amount); } 그런 다음, 다른 결제 전략을 구현합니다: @Component public class CreditCardPayment implements PaymentStrategy { @Override public void pay(double amount) { // 신용 카드 결제 처리 로직 System.out.println("Paid " + amount + " using Credit Card."); } } @Component public class PaypalPayment implements PaymentStrategy { @Override public void pay(double amount) { // PayPal 결제 처리 로직 System.out.println("Paid " + amount + " using PayPal."); } }   2. Enum 사용 Enums는 미리 정의된 상수 집합과 그와 관련된 동작을 나타내는 데 사용할 수 있습니다.   예제: 주문 상태 관리 다양한 동작을 가진 OrderStatus enum을 정의합니다: public enum OrderStatus { NEW { @Override public void handle() { System.out.println("Processing new order."); } }, SHIPPED { @Override public void handle() { System.out.println("Order shipped."); } }, DELIVERED { @Override public void handle() { System.out.println("Order delivered."); } }; public abstract void handle(); }   3. 다형성 (Polymorphism) 다형성은 객체를 실제 클래스가 아닌 부모 클래스의 인스턴스로 취급할 수 있게 해줍니다. 이를 통해 부모 클래스의 참조를 통해 파생 클래스의 재정의된 메서드를 호출할 수 있습니다.   예제: 알림 시스템 Notification 인터페이스와 그 구현을 정의합니다: public interface Notification { void send(String message); } public class EmailNotification implements Notification { @Override public void send(String message) { // 이메일 전송 로직 System.out.println("Sending email: " + message); } } public class SmsNotification implements Notification { @Override public void send(String message) { // SMS 전송 로직 System.out.println("Sending SMS: " + message); } }   4. 람다 표현식과 함수형 인터페이스 람다 표현식은 특히 단일 메서드 인터페이스를 다룰 때 코드를 간소화할 수 있습니다.   예제: 할인 서비스 람다 표현식을 사용하는 할인 서비스를 정의합니다: import java.util.HashMap; import java.util.Map; import java.util.function.Function; public class DiscountService { private Map<String, Function<Double, Double>> discountStrategies = new HashMap<>(); public DiscountService() { discountStrategies.put("SUMMER_SALE", price -> price * 0.9); discountStrategies.put("WINTER_SALE", price -> price * 0.8); } public double applyDiscount(String discountCode, double price) { return discountStrategies.getOrDefault(discountCode, Function.identity()).apply(price); } }   5. 명령 패턴 (Command Pattern) 명령 패턴은 요청을 객체로 캡슐화하여 클라이언트를 큐, 요청, 작업으로 매개변수화할 수 있게 합니다.   예제: 파일 작업 Command 인터페이스와 구체적인 명령을 정의합니다: public interface Command { void execute(); } public class OpenFileCommand implements Command { private FileSystemReceiver fileSystem; public OpenFileCommand(FileSystemReceiver fs) { this.fileSystem = fs; } @Override public void execute() { this.fileSystem.openFile(); } } public class CloseFileCommand implements Command { private FileSystemReceiver fileSystem; public CloseFileCommand(FileSystemReceiver fs) { this.fileSystem = fs; } @Override public void execute() { this.fileSystem.closeFile(); } }   6. 가드 절 (Guard Clauses) 가드 절은 조건을 미리 처리하여 중첩 구조를 줄이고 코드를 더 읽기 쉽게 만듭니다. 예제: 사용자 검증 사용자 입력을 검증하기 위해 if-else 문을 중첩하는 대신, 가드 절을 사용하여 잘못된 경우를 미리 처리합니다: public class UserService { public void registerUser(User user) { if (user == null) { throw new IllegalArgumentException("User cannot be null"); } if (user.getName() == null || user.getName().isEmpty()) { throw new IllegalArgumentException("User name cannot be empty"); } if (user.getEmail() == null || user.getEmail().isEmpty()) { throw new IllegalArgumentException("User email cannot be empty"); } // 등록 진행 System.out.println("Registering user: " + user.getName()); } }   결론 이러한 전략을 적용함으로써 Java Spring Boot 프로젝트에서 if-else 문의 사용을 크게 줄일 수 있습니다. 이는 코드의 가독성을 높이고 유지보수성과 확장성을 향상시킵니다. 이러한 패턴과 관행을 채택하여 더 깨끗하고 효율적인 코드를 작성하세요. 번역: [https://ducktopia.tistory.com/129] 원문:

좋아요 177 저장 314

thumbnail