작업 대기열을 처리하는 QueueProcessor
클래스가 있습니다. 저는 많은 통계 자료로 이루어진 모든 작업에 대한 요약을 이메일로 보내고 싶습니다. 나는 이미 메일 클래스 (Zend_Mail
)를 사용하고 있기 때문에 대부분의 전자 메일 작업은 나에게 추상화되어 있지만 요약 정보를 생성하는 코드를 어디에 넣어야하는지 파악해야한다. 기본적으로 처리 중에 데이터를 수집하고 데이터를 전자 메일에 적합한 형식으로 변환해야합니다.하나의 다른 클래스에 의해서만 사용되는 클래스를 갖게하는 것이 좋지 않습니까?
제 질문은 QueueProcessorSummaryEmail
이라는 별개의 클래스를 만들어야합니까, 아니면 원래 클래스와 매우 밀접하게 결합되어 있기 때문에 나쁜 디자인으로 간주됩니까? I 했다는 그것의 자신의 클래스 한 경우, 나는 이메일을 생성하는 것이 데이터의 톤을 통과해야 할 것이다, 그러나 분리의 종류가 좋을 것입니다. 내가 수업을하지 할 경우, 모든 데이터는 QueueProcessor
클래스 내부에서 사용할 수 있지만 그것은 단지 하나 개의 클래스에서 처리 로직 및보고 생성 논리를 혼합 이상한 느낌. 나는 "보고서 생성 논리"를 말할 때
그리고 레코드에 대한
, 나는 HTML 인라인을 생성하고있어 의미하지 않는다; 나는 그 관점을 사용하고있다. 형식화한다는 것은 데이터를 가져 와서 전자 메일 보고서에서 사용할 수있는 데이터로 집계하는 것을 의미합니다.
왜 QueueProcessorSummaryEmail을 내부 클래스의 QueueProcessor로 만들지 않습니까? 따라서 어떤 데이터도 전달할 필요가 없습니다. –
C# StyleCop에서 파일 당 두 개 이상의 클래스에 대해 불만을 제기합니다. 어쨌든, 그것이 작동하고 상대적으로 버그가 없다면, 다른 버그와 기능으로 넘어 가지 않을까요? 패턴과 클래스 계층 구조 (고급 요소)에 대해 너무 많이 생각하면 민첩성을 유지할 수 있습니다. 코드에 대한 가장 중요한 변경 사항은 실제 고객이 기능 A)이 필요하고 버그 B)를 견딜 수 없다는 불평을하는 것입니다. 사용자가 아직 알지 못하는 사항입니다. 그래서, 그것을 끝내고, 그것을 꺼내서, 성숙한 후에 그것을 연마하십시오. –
@Hamish Grubijan 너무 민첩하지 마십시오. 애자일은 그 자리를 지키고 장점이 있지만, 기술적 부채와 같은 것이 있습니다. 현재 활발하게 진행되고있는 애자일, 시그마 6 또는 다른 유행 관리 스타일이 현재 유행하고 있다는 판단을 완전히 내리지 않게하십시오. – BenAlabaster