2008-10-17 5 views
2

큰 프로젝트에 대해 궁금한 점이 있습니다 - 항공사 예약 시스템, 얼마나 많은 클래스/오브젝트가 있는지 알아야합니다.큰 프로젝트의 클래스 수

개체 : 고객, 비행기, 공항, 경로, 티켓, 주문. 그것이 내가 생각할 수있는 전부입니다. 이 프로젝트는 아마도 수십만 줄의 코드가 될 것이므로 더 많은 클래스가있을 것입니다 (오브젝트와 관련없는 것들을 처리 할 것입니다)?

만약 그렇다면 얼마나 많은 수업이있을 것입니까? 얼마나 많은 객체가 있습니까? (내 목록마다 10,000 개의 고객 객체가 아니라 얼마나 많은 다른 이름)이있을 가능성이 있습니까?

답변

7

최적의 클래스 수를 계산하기위한 마법 공식은 없습니다. 위에서 설명한 아키텍처로 매우 간단하게 항공 예약 시스템을 만들 수 있습니다. 당신이 리팩토링 더 많은 기능을 추가하고, 특별한 경우를 수용하기 위해 계속, 당신은 예를 들어, MealPreference, COUPONCODE, 터미널, 게이트, 항공, 수하물, BaggageTransfer, RainCheck, FlightUpgrade 등

많은 이상의 클래스로 끝낼 수 있었다

(민첩성을 원한다면) 필요한만큼 정확하게 코드를 작성하고 확장하기 쉽도록 미리 계획해야합니다. 그러나 어떤 프로젝트도 예상과 달리 시간이 지남에 따라 성장할 것입니다.

+0

귀하의 답변에 따라 어떤 물체가 대응해야하는지 궁금합니다. 나는 그 대답이 "당신이 원한다면 무엇이든"이라고 생각합니다. – keyofnight

0

클래스 수는 실제로 디자인 패턴 및 아키텍처와 관련이 있습니다.

예를 들어, 두 개의 숫자를 더하는 간단한 콘솔 응용 프로그램을 사용하면 사용 된 구현 및 추상화를 기반으로 1에서 10 (대략적인 추측)을 가질 수 있습니다.

아키텍처와 패턴을 알지 못하고 실제로 응용 프로그램에 포함될 "객체"의 수를 판단 할 수 없습니다.

1

클래스 수는 통계적 일 뿐이며 모범 사례를 수립하는 데 도움이되지 않는다는 것을 알고 있지만 수천 개의 클래스로 갈 수 있다고 말합니다.

모범 사례와 명명 규칙을 기억하는 것이 중요합니다. 좋은 패키지 구조와 목적에 따라 클래스 이름을 지정하고 클래스에 대한 높은 수준의 응집력을 염두에 두는 것이 중요합니다.

호기심을 만족시키는 것 외에도 숫자는 중요하지 않습니다.

0

나는 그것이 많은 것들에 매우 의존한다는 것에 동의한다; 코드 언어, 응용 프로그램 아키텍처, 타사 확장 (일반적으로 응용 프로그램에서 실제로 호출되지 않지만 .dll 또는 .jar 파일에 포함 된 많은 클래스가 포함되어 있음)의 수와 개발자가 거대한 모 놀리 식 클래스를 사용하거나 모든 것을 인터페이스, 추상, 단순/스텁 및 실제 구현으로 나누는 경향이 있는지 여부를 결정합니다.

통계를 찾고 있다면, 나는 대략 3000 개의 클래스와 200 개의 JSP 페이지, 그리고 UI를 지원하는 수십 개의 CSS와 JS 파일을 말하는 제너럴 모터스의 대규모 프로젝트에 참여하고있었습니다. DB 드라이버, 스프링 프레임 워크, 몇 개의 아파치 공유 라이브러리, Hibernate ORM, Mule, JSTL, 아마도 다른 핵심 구성 요소들 ... 웹 서버 자체가 웹 서버 그 자체인데 ...

3

실제 항공 예약 시스템 ? 수천. 용이하게.

그 중 절반은 "지속성, 로깅, 통합 등과 관련된"인프라 스트럭처 클래스입니다.어쩌면 수백 개의 도메인 클래스 (항공기, 비행기, 비행, 승객, FrequentFlyer, MaintenanceSchedule, WeatherDelay 등) 일 수 있습니다. 그리고 나머지 절반은 고객과 내부 앱을 모두 지원하는 컨트롤러, 뷰, 뷰 모델 등의 UI 관련 요소입니다.

0

이것은 전적으로 사용하는 추상화에 따라 다릅니다. 내 경험에 비추어 볼 때, 문제 영역을 더 가깝게 지킬수록 (예를 들어 비즈니스 사람이 말하는 것처럼 코드를 더 가깝게 만들수록), 더 많은 수업을 가질 수 있습니다.

0

다른 답변은 현명합니다. 기본적으로 "의존합니다."

그러나 다른 의미에서 주어진 수의 메소드에 대해 최적 수의 클래스가 있어야합니다. 즉, 여러 가지 메소드가 주어진다면, 비 계층 적 캡슐화 컨텍스트 내에서 특정 개수의 클래스가 있으며, 이러한 메소드의 잠재적 구조 복잡성을 최소화합니다. (실제 수는 캡슐화의 두 번째 법칙에 의해 주어지며 메서드 수의 제곱근을 클래스 당 공용 메서드 수로 나눈 값과 같습니다.

그렇다면 질문은 몇 가지 방법이 필요합니까? 메소드가 클래스 내에 캡슐화되어있는 위와 유사하게, 코드 블록은 메소드 내에서 캡슐화되므로 메소드의 수는 위의 동일한 두 번째 법칙에 의해 고정됩니다.

다음 질문은 : 얼마나 많은 코드 블록을 가질 수 있습니까?

다른 답변을 보내 주시면 답변을 얻으실 수 있습니다. www.EdmundKirwan.com

감사합니다,

에드 자세한 내용은

, 여기에 캡슐화 이론을 참조하십시오.

관련 문제