Ruby의 객체 모델은 유연하고 유지보수 가능한 시스템의 핵심 기반입니다.
-
구성 요소: 클래스, 조상 체인, 싱글톤 클래스, 인스턴스 변수, 메서드 탐색 경로로 이루어집니다.
-
효용: ‘갓 모델’을 방지하고, 특화된 유기체 같은 시스템 설계를 가능하게 합니다.
위임(Delegation) 객체로 도메인 분리 및 코드 명확성을 확보합니다.
-
방법: SimpleDelegator/SingleDelegator로 객체를 래핑, 필요한 동작만 오버라이드합니다.
-
이점: 핵심 모델 순수성 유지, 기능 플래그/실험 활용, 조건문 감소에 기여합니다.
가독성 높은 메타프로그래밍으로 동적 동작을 구현합니다.
-
적용:
scope자동 생성 등으로 보일러플레이트를 줄이고 로직 가시성을 높입니다. -
주의: 시스템 이해를 돕는 방향으로 신중히 사용해야 합니다.
Ruby 모듈을 통한 ActiveRecord 확장은 재사용성을 증대시킵니다.
-
역할: 소프트 삭제 등 공통 동작을 모듈로 캡슐화하여 모델에 주입합니다.
-
결과: 예측 가능하며 재사용 가능한 도메인 기능을 시스템 전반에 확산시킵니다.
DSL(Domain-Specific Language) 구축은 비즈니스 로직 표현을 강화합니다.
-
구현: Rails처럼 자체 DSL을 정의해 비즈니스 규칙을 명확하고 표현력 있게 작성합니다.
-
가치: 비기술적 이해관계자도 코드를 이해하여 협업 효율성을 높입니다.