2009-09-09 3 views
3

이 질문을하는 가장 쉬운 방법은 내가 실제로 직면하고있는 실제 상황을 생각하는 것입니다.모델 (MVC)에 도우미 메서드를 포함 할시기는 언제입니까?

우리 시스템에서는 사이트 테이블에 행을 나타내는 사이트 모델 (여기에 고전적인 MVC 프레임 워크가 있음)이 있습니다. 사이트 모델에 저장되는 사이트 테이블의 필드 중 하나는 사이트의 표준 시간대입니다. 우리는 이것을 사용하여 데이터베이스에서 표시되는 사이트의 시간대까지 UTC datetimes를 조정합니다.

이러한 도우미 메서드는 사이트 모델에 포함 된 사이트의 표준 시간대를 사용하므로이 방법을 포함 할 수 있습니까? (예 : utcDatetimeToSiteTimestamp(), utcTimeStampToSiteDatetime() 모델에서? 아니면 그들이 별도의 헬퍼 클래스 또는 뭔가 배치해야합니까?

필자는 모델이 데이터베이스의 데이터 행을 보유하는 것 이상을 수행해야한다는 것을 알고 있지만이 데이터에서 작동하는 도우미 메서드와이 데이터를 외부 입력에 사용하는 도우미 메서드 사이의 줄은 어디에 있습니까?

어떤 통찰력에도 감사드립니다!

답변

6

일부 판단을위한 문제입니다. 도우미 메서드가 일반적이며 다른 클래스에서 유용 할 수 있다면 코드를 다시 사용할 수있게하기 때문에 도우미 클래스를 만듭니다. 도우미 메서드가 문제의 클래스에 매우 특정한 경우에는 바로 거기에 두십시오.

1

이 메소드는 실제로 한 모델에 속하지 않으므로 헬퍼 클래스를 작성합니다. 그들은 제 의견으로는 분리 된 도우미 클래스의 전문가 인 정적 메소드가 될 것입니다.

3

대답은 책임 영역을 나타냅니다. 모델 클래스는 물건을 추가하고, 물건을 수정하고, 물건을 제거하고, & 내부 상태를 변경하는 방법을 아는 책임이 있습니다.
변환에 관한 내용이 없습니다. 변환기는 외부 클래스에 속합니다. 따라서 형식 지정 객체 또는 모델이 클라이언트에 표시되는 방법을 담당하는 모든 작업을 수행하십시오.

1

나는 판단의 문제라는 점에서 Vincent Ramdhanie와 동의합니다. 개인적으로 저는 모델 클래스 내에서 도우미 함수를 정의하는 것을 좋아하지 않습니다. 너무 지저분하고 거기에 속하지 않는다고 생각합니다. (게다가 헬퍼 함수가 거의 사용되지 않는 경우가 종종 있습니다.) 그러나 그것은 내 모델 내에서 도우미 기능을 사용하지 않는다고 말하는 것이 아닙니다. 예를 들어 BlogPost 모델 클래스가있는 경우 getOneCompiled() 메서드는 도우미 함수를 사용하여 테이블 행을 나타내는 배열을 반환하기 전에 일부 링크를 어셈블합니다.

옵션을 살펴보고 코드를 읽고 유지하기 쉬운 코드가 생성되는 것을 확인하는 것이 중요합니다. 자신의 파일에 도우미 함수를 작성하는 것은 좀 더 많은 사전 작업이 필요할 수 있지만 코드를 관리하기 쉽게 만들면 확실히 그만한 가치가 있습니다.

관련 문제