난 애플 리케이션의 나머지 부분을 퍼시스턴스 기술에서 추상화하는 데이터 액세스 레이어가 있습니다. 현재 구현은 SQL 서버이지만 변경 될 수 있습니다. 어쨌든, 나는이 주 데이터 액세스 클래스가 크고 커지면서 테이블이 커질수록 (현재 약 40 개의 테이블이 늘어남) 찾습니다. 이 데이터 액세스 계층의 인터페이스는거기에 큰 데이터 액세스 레이어를 리팩터링 할 필요가있다
public interface IOrderRepository
{
Customer[] GetCustomerForOrder(int orderID);
Order[] GetCustomerOrders(int customerID);
Product[] GetProductList(int orderID);
Order[] GetallCustomersOrders(int customerID);
etc . . .
}
이 뒤에 구현에 데이터를 얻을 수도 있습니다 질문입니다 입력 컬렉션
이 의지의 결과를 해당 쿼리를 실행하고 반환 기본 SQL 저장 발동 계속 성장하고 성장하십시오. 그것의 꽤 유지할 수있는 하나의 책임의 진정한 휴식은 아니지만 클래스는 지금 코드의 2000 라인 이상입니다.
그래서 확실한 클래스 크기 (실제 개념 결합이 없음)로 인해 문제는 어떤 차원 또는 수준의 추상화로 분해되어야합니까?
가 '시도하지 마십시오 예외 처리를 [..] 다소 변경 t han은 새 테이블을 추가합니다. ' 많은 테이블이 문제가되지 않습니다. 필요한 경우 하나 만드십시오. –
나는 상식을 버리라고 제안하지 않는다. 다음 두 가지 점을 고려하자. 첫째, 데이터 모델의 명확성과 성능을 위해 정규화 십자군이 나쁠 수있다. 둘째, 많은 프로그래머가 단일 데이터 구조 (테이블)로 우아하게 통합 될 수있는 유형의 새 테이블을 작성하는 것을 보았습니다. –