Zbatimi i SOLID Parimeve në Ruby: Shembuj dhe praktika më të mira

Single Responsibility Principle(SRP)

Ky parim thotë se çdo klasë duhet të ketë një përgjegjësi të vetme. Ai thekson se një klasë duhet të kryejë një funksion specifik dhe të mos ketë shumë arsye për të ndryshuar.

Shembull: Menaxhimi i informacionit të përdoruesit dhe dërgimi i njoftimeve me email.

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)

Ky parim inkurajon zgjerimin e funksionalitetit duke shtuar kod të ri në vend të modifikimit të kodit ekzistues.

Shembull: Trajtimi i metodave të ndryshme të pagesës në një aplikacion e-commerce.

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)

Ky parim pohon se objektet e një klase të derivuar duhet të jenë të zëvendësueshme për objektet e klasës bazë pa ndikuar në korrektësinë e programit.

Shembull: Menaxhimi i formave gjeometrike.

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)

Ky parim këshillon ndarjen e ndërfaqeve në më të vogla për të shmangur detyrimin e klasave për të zbatuar metoda që nuk u duhen.

Shembull: Ndërfaqet për përditësimin dhe shfaqjen e të dhënave.

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)

Ky parim sugjeron përdorimin e injektimit të varësisë për të menaxhuar varësitë.

Shembull: Përdorimi i injektimit të varësisë për të menaxhuar varësitë.

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

Mos harroni se zbatimi i SOLID parimeve në Ruby duhet të bëhet në mënyrë fleksibël bazuar në qëllimin specifik të projektit tuaj dhe të kuptuarit tuaj të SOLID dhe Ruby.