Fre*_*ood 3 .net c# oop inheritance class
当我尝试创建良好的对象层次结构,这将有助于编写更少的代码并避免使用不必要的字段时,我觉得自己可以自由地为良好的分组创建许多基类,这通常是抽象的.这样做有什么不利之处呢?很多次继承类可以慢一点?要看到许多不必要的抽象类没有足够好的命名,在智能(自动完成)中遇到它时会引起混淆吗?其他可能是什么?
Eri*_*ert 10
很多次继承类可以慢一点?
只有一种方法可以回答性能问题:尝试两种方式,并测量结果.然后你就会知道.
这样做有什么不利之处呢?
过于复杂的对象层次结构的缺点是:
1)它们令人困惑,因为它们代表了不属于业务领域的概念
例如,您可能希望拥有一个可以存储有关员工,计算机和会议室信息的存储系统.所以你有StorableObject,Employee,Room,Computer等类,其中Employee,Room和Computer继承自StorableObject.您的意思是"StorableObject"来表示您的数据库实现.有人天真地阅读你的代码会问:"为什么是一个人'可存储的对象?’当然,电脑是一个可存储的对象,以及一间是保存它.当你混淆了机制的共享代码与意义的"在商业领域是一种"关系,事情变得混乱.
2)你只能在C#中获得一个"继承枢轴"; 它是一种单一的继承语言.当您选择将继承用于一件事时,这意味着您已选择不将继承用于其他事物.如果你制作了一个基类Vehicle,以及派生类MilitaryVehicle和CivilianVehicle,那么你刚刚选择了没有基类Aircraft,因为一架飞机既可以是民用也可以是军用.
你必须非常谨慎地选择你的继承支点; 你只有一次机会把它弄好.您的代码共享机制越复杂,您就越有可能将自己描绘成一个角落,在这个角落里您会遇到一堆共享的代码,但不能使用继承来表示您想要建模的概念.
有很多方法可以在没有继承的情况下共享代码.尝试为真正需要的东西保存继承机制.
小智 5
我刚刚做了一个非常简单的实际测试(虽然不科学),我创建了名为 A、B、C ... Q 的空类,其中 B 继承自 A,C 继承自 B,依此类推,Q 继承自 P。
当尝试检索有关此的一些指标时,我创建了一些循环,在其中我简单地创建了 x 个 A 对象、x 个 B 对象等。
这些类是空的并且仅包含默认构造函数。
基于此,我可以看到,如果创建 A 类型的对象需要 1 秒(缩放),那么创建 Q 类型的对象需要 7-8 秒。
所以答案一定是肯定的,太深的层次结构会影响性能。不过,它是否引人注目取决于很多因素,以及您创建的对象数量。