SOLID 원칙 적용 Ruby: 예 및 모범 사례

Single Responsibility Principle(SRP)

이 원칙은 각 클래스가 단일 책임을 가져야 한다고 명시합니다. 클래스는 하나의 특정 기능을 수행해야 하며 변경할 이유가 너무 많지 않아야 함을 강조합니다.

예: 사용자 정보 관리 및 이메일 알림 전송.

class UserManager  
  def create_user(user_data)  
    # Logic for creating a user  
  end  
end  
  
class EmailService  
  def send_email(email_data)  
    # Logic for sending an email  
  end  
end  

Open/Closed Principle(OCP)

이 원칙은 기존 코드를 수정하는 대신 새 코드를 추가하여 기능을 확장하도록 권장합니다.

예: 전자 상거래 애플리케이션에서 다양한 지불 방법 처리.

class PaymentProcessor  
  def process_payment  
    # Common logic for payment processing  
  end  
end  
  
class CreditCardPaymentProcessor < PaymentProcessor  
  def process_payment  
    # Logic for processing credit card payment  
  end  
end  
  
class PayPalPaymentProcessor < PaymentProcessor  
  def process_payment  
    # Logic for processing PayPal payment  
  end  
end  

Liskov Substitution Principle(LSP)

이 원칙은 프로그램의 정확성에 영향을 주지 않으면서 파생 클래스의 개체를 기본 클래스의 개체로 대체할 수 있어야 한다고 주장합니다.

예: 기하학적 모양 관리.

class Shape  
  def area  
    # Common logic for calculating area  
  end  
end  
  
class Rectangle < Shape  
  def area  
    # Logic for calculating area of rectangle  
  end  
end  
  
class Square < Shape  
  def area  
    # Logic for calculating area of square  
  end  
end  

Interface Segregation Principle(ISP)

이 원칙은 클래스가 필요하지 않은 메서드를 강제로 구현하지 않도록 인터페이스를 더 작은 것으로 나누는 것을 권장합니다.

예: 데이터 업데이트 및 표시를 위한 인터페이스.

module UpdateableFeature  
  def update_feature  
    # Logic for updating feature  
  end  
end  
  
module DisplayableFeature  
  def display_feature  
    # Logic for displaying feature  
  end  
end  

Dependency Inversion Principle(DIP)

이 원칙은 종속성을 관리하기 위해 종속성 주입을 사용하는 것을 제안합니다.

예: 종속성 주입을 사용하여 종속성을 관리합니다.

class OrderProcessor  
  def initialize(db_connection, email_service)  
    @db_connection = db_connection  
    @email_service = email_service  
  end  
end  

SOLID 에 원칙을 적용하는 것은 Ruby 프로젝트의 특정 목적과 및 에 대한 이해에 따라 유연하게 수행되어야 한다는 점을 SOLID 기억 하십시오 Ruby.