大型项目中的类数

时间:2008-10-17 22:59:05

标签: oop

我只是想知道大型项目 - 比如航空公司预订系统,它可能有多少类/对象。

对象:客户,飞机,机场,路线,机票,订单。这就是我能想到的一切。该项目可能会有数十万行代码,因此可能会有更多的类(与非对象相关的东西)?

如果是这样,有多少课程可能(大致)?有多少个对象(根据我的列表,所以不是10,000个客户对象,有多少个不同的名称)可能会有?

7 个答案:

答案 0 :(得分:7)

计算最佳班级数确实没有神奇的公式。您上面描述的架构可能会创建一个非常非常简单的航空预订系统。当您继续重构,添加更多功能并适应特殊情况时,最终可能会有许多更多类,例如MealPreference,CouponCode,Terminal,Gate,Airline,Baggage,BaggageTransfer,RainCheck,FlightUpgrade等

正如您所希望的那样(如果您想要敏捷),只需准确编码您当时所需的内容,提前计划以便于扩展。但是,随着时间的推移,任何项目都会以意想不到的方式发展。

答案 1 :(得分:3)

对于真实世界的机票预订系统?数千人。容易。

我猜大约有一半是“基础设施”类 - 主要与持久性,日志记录,集成等有关。可能有几百个域类(航空公司,飞机,飞行,乘客,FrequentFlyer,MaintenanceSchedule,WeatherDelay等) )。然后另外一半是与UI相关的 - 控制器,视图,视图模型等,以支持客户和内部应用程序。

答案 2 :(得分:1)

班级的数量只是统计的,它知道它不会帮助你建立任何最佳实践,但我会说它可以用于成千上万的课程。

重要的是要记住最佳实践和命名约定,重要的是拥有一个良好的包结构并根据其目的命名您的类,同时牢记您的课程的高度凝聚力。< / p>

除了满足你的好奇心之外,这个数字并不重要。

答案 3 :(得分:0)

类的数量实际上与您构建的设计模式和体系结构有关。

例如,通过一个简单的控制台应用程序将两个数字组合在一起,根据所使用的实现和抽象,您可以拥有1到10个(粗略猜测)。

如果不了解架构和模式,你真的无法判断应用程序将包含多少“对象”。

答案 4 :(得分:0)

我同意它非常依赖很多东西;代码语言,应用程序体系结构,第三方扩展的数量(通常包含许多实际上并未被应用程序调用的类,但包含在.dll或.jar文件中),以及很多关于习惯的开发人员,如果他们倾向于使用巨大的单片类,或者将所有内容分解为接口,抽象,简单/存根和实际实现。

然而,如果您只是寻找统计数据,我最近正在为通用汽车开展一个大型项目,我要说大约3000个类,加上200个JSP页面,以及几十个支持UI的CSS和JS文件。插入你有数据库驱动程序,Spring框架,几个apache commons库,Hibernate ORM,Mule,JSTL,可能还有一些其他核心组件...... Web服务器本身......

答案 5 :(得分:0)

这完全取决于您使用的抽象。根据我的经验,您越接近问题域(您越接近尝试使您的代码读起来就像商务人士所说的那样),您将拥有的课程越多。

答案 6 :(得分:0)

你收到的所有其他答案都是明智的:基本上,“这取决于。”

但从另一个意义上讲,对于给定数量的方法,您应该拥有最佳数量的类;也就是说,给定多种方法,存在特定数量的类(在非分层封装上下文中,并且近似近似),这最小化了那些方法的潜在结构复杂性。 (实际数字由封装的第二定律给出,等于方法数的平方根除以每类公共方法的数量)。

那么问题就变成了:你需要多少种方法?与上面类比,其中方法被封装在类中,因此代码块是方法中的封装,因此方法的数量由上面相同的第二定律修正。

那么问题是:我将拥有多少个代码块?

你收到的其他答案就是答案:这取决于。

有关更多信息,请参阅封装理论: www.EdmundKirwan.com

此致