본문 바로가기

소프트웨어-이야기/프로그래밍 언어와 프레임워크

레일즈에 Service/Decorator Layer 적용하기 (8) - 끝~ 이 포스팅은
레일즈에 Service/Decorator Layer 적용하기 (7) - Helper 대신에 Decorator 사용하기 이 포스팅은
레일즈에 Service/Decorator Layer 적용하기 (6) - Service Object으로 콜백 옮기기 이 포스팅은
레일즈에 Service/Decorator Layer 적용하기 (5) - Form Object에서 유효성 체크하기 이 위키는 Build Sleek Rails Components With Plain Old Ruby Objects을 정리한 글입니다 :) 저자는 모델 객체에서는 association과 constant만 관리되는게 더 로직을 깔끔하게 만든다고 이야기했었습니다. 그래서 유효성 체크와 callback 로직은 model에서 다루지 않아야한다고 했죠. 그래서 이번 챕터에서는 model 객체에 있던 유효성 로직을 지우고, 대신에 form object를 사용하도록 하는 방법을 설명하고자 합니다. Form Object란?Form Object는 Plain Old Ruby Object입니다. 그리고 이건 데이터베이스를 호출해야할 때, controller와 service Object에서 사용되는 객체입니다. Form Obje..
레일즈에 Service/Decorator Layer 적용하기 (4) - Service Object 이 포스팅은
레일즈에 Service/Decorator Layer 적용하기 (3) - Service Object 이 포스팅은 이 길어져서, 두번째 글을 정리해보고자 합니다.Service Object는 비즈니스 로직의 일부를 옮긴 클래스입니다. Skiny Controller Fat Model 스타일에서는, 한 객체에 여러 비즈니스 로직이 포함되게 됩니다. 반면, Service Object를 사용하면 여러 클래스가 생성되고, 각 클래스는 하나의 목적을 위해 존재하게 됩니다. 왜 Service Object를 사용해야할까요? 1. 디커플링서비스 객체를 사용하면 객체 간에 독립성을 유지하는 데에 도움이 됩니다. 2. 가독성이름이 잘 지어진 서비스 객체를 사용하면 어플리케이션이 무슨 일을 하는 건지 찾기 쉽습니다. 서비스 디렉토리만 보면, 이 애플리케이션이 어떤 역할을 하는지 쉽게 알아차릴 수 있습니다. 3. 모델과 컨트롤러..
레일즈에 Service/Decorator Layer 적용하기 (2) - Value Object 이 포스팅은 이 길어져서, 두번째 글을 정리해보고자 합니다. Service Layer를 사용하는 개발 가이드라인이 글을 쓴 저자는 Service / Decorator Layer를 사용해서 개발을 할 때, 아래의 가이드라인을 따른다고 합니다. 1. ActiveRecord 모델은 association과 constant만 갖고 있어야합니다. 그 외에는 아무것도 하지 않아야합니다.model에서는 서비스 객체를 사용하지 않아야하고, 유효성 체크는 ActiveModel Form object를 사용해서 해결해야합니다. 2. 컨트롤러는 Service Object만 호출해야합니다. 컨트롤러의 코드는 짧게 구성되어야합니다. 서비스 객체 호출 외에, 컨트롤러에서 해야하는 기능들은 아래와 같습니다. -> HTTP 라우팅, 파..
레일즈에 Service/Decorator Layer 적용하기(1) - MVC 패턴 이 포스팅은 Build Sleek Rails Components With Plain Old Ruby Objects을 정리한 글입니다 :) 시작루비온레일즈는 사용자를 필요로하는 서비스를 빠르게 앱을 만들고, 검증할 수 있다는 장점이 있습니다.그러나 시스템 규모가 커지면 코드는 점점 거대해지고, 복잡해지게 됩니다. 그러다보면 모델이 너무 뚱뚱해져서, MVC에서 말하는 "fat model, skinny controller" 패턴을 버리고 싶어지기도 합니다.그러나 루비온레일즈를 계속 사용해야하는 경우 어떻게 해야할까요? 이 문제에 대한 답으로 OOP 개념을 사용해서, 코드의 커플링을 줄여주고, 가독성있게 변경하는 방법에 대해서 설명하고자 합니다. 어떤 경우에 Service / Decorator Layer를 사용..