你什么时候定义一个班级?

cam*_*cam 3 c# oop

假设你想写一个俄罗斯方块克隆,你刚开始计划.

你如何决定什么应该是一个班级?您是将单个块设为类还是仅使用不同的块类型?

我问这个是因为我经常发现自己编写的课程太多,或者写的课程太少.

Eri*_*ert 10

退后一步.

我怀疑你把马放在马前.OOP本身并不是一件好事,它是一种有效解决问题的技术.问题包括:"我有一个拥有多种技能和专业知识的大型多人团队组织.我们正在构建大型复杂软件,其中许多子系统相互交互.我们的预算有限."

OOP适用于此问题空间,因为它强调抽象,封装,多态和继承.这些都适用于许多团队编写的大型软件空间.抽象允许一个团队使用另一个团队的工作而无需了解实现细节,从而降低了通信成本.封装允许一个团队知道他们可以对其内部结构进行更改以使其更好,而不必担心影响另一个团队的成本. 多态性降低了使用给定抽象的许多不同实现的成本,具体取决于当前的需要.继承允许一个团队在另一个团队的工作基础上进行构建,干净地重用现有代码,而不是花费时间和金钱重新发明它.

所有这些都不是好事,而是因为它们降低了大型团队复杂软件场景的成本.

他们是否可以降低单人琐事软件方案的成本?我不认为他们这样做; 我认为他们会增加成本.继承点是通过代码重用来节省时间; 如果你花费更多时间来获得完美的继承层次,而不是通过代码重用来节省时间,那不是净赢,而是净损失.与所有其他人类似:如果你没有相同的东西有很多不同的实现,那么花时间在多态上是一种损失.如果您没有任何人要使用您的抽象,或者您需要保护您的内部状态的任何人,那么抽象和封装是成本而没有相关的好处.

如果您想要做的就是以OO风格编写俄罗斯方块,以便以这种方式练习写作,请务必及时前进,不要让我阻止你.我只是说:不要觉得你有道德要求使用OOP来解决OOP不适合解决的问题; OOP并不是所有软件开发风格的全部.


SwD*_*n81 5

您可能想要查看如何设计面向对象的项目?.接受的解决方案是一个良好的开端.我也会拿起一本设计模式书.