Skip to content

7장 SRP:단일 책임 원칙

Lee Ho Sung edited this page Feb 3, 2022 · 4 revisions

자유롭게 작성 해 주세요.

재영

SRP

  • 하나의 모듈은 하나의 액터에 대해서만 책임져야한다
  • 장고 save 에 많은 의존성을 걸어서 발생하는 문제가 비슷하지 않을까?
    • 데이터베이스 저장에 호출되는 save() 메서드에 여러 액터들을 위한 논리가 포함되었음
    • 이로인해 save() 메서드의 관리가 어려워짐
class Model:
  field_a = ''
  field_b = ''
  field_c = ''

  def save(self):
      """데이터베이스 저장시 호출되는 함수"""
    self.field_a = 'x'

def action_a():
  """save 에 의존"""
  model.field_b = 'y'
  model.save()

def action_b():
  """save 에 의존"""
  model.field_c = 'z'
  model.save()

---------------------------------------------------------------------------
class Model:
  field_a = ''
  field_b = ''
  field_c = ''

  def save(self):
      """데이터베이스에 저장"""
      # action_a says: '이제 이거 필요 없으니까 사라지거라'
      # self.field_a = 'x'
      pass

def action_a(model):
  model.field_b = 'y'
  model.save()

def action_b(model):
  # ????????????? -> 잘 되던게 왜 갑자기?
  model.field_c = 'z'
  model.save()


=> Model 클래스가 action_a 와 action_b 두 개의 액터에 대한 책임을 지고있던것은 아닐까?
---------------------------------------------------------------------------
class Model:
  field_a = ''
  field_b = ''
  field_c = ''

def action_a(model):
    model.field_a = 'x'
    model.field_b = 'y'

def action_b(model):
    model.field_a = 'x'
    model.field_c = 'z'

=> 개별 액터와 관련된 부분에서 자신에게 필요한 코드들을 잘 가지고 있도록 해야한다.
호성
  • 컴포넌트, 모듈, 라이브러리, 서비스, 프레임워크 는 어떤 차이가 있을까?
  • 인터페이스
  • 계약 정도의 의미
  • 수행 해야 하는 규약
  • 교환될 수 있는 것