我正在用C ++开发一个项目。我意识到我的程序不是OO。
我有一个main.cpp,以及几个用于不同目的的标头。每个头基本上是相关函数的集合,其中一些全局变量用于保留数据。我还有一个用于管理窗口的windowing.h。这包含winMain()和winProc()。当事件发生时(如点击按钮)或需要信息时(例如“创建此窗口有多大?”),它会调用驻留在main.cpp中的函数。这些函数在windowing.h中包含的单独.h文件中声明。
是否值得将此更改为OO?是值得的工作。有没有更好的方法可以在没有太多变化的情况下构建程序?
欢迎所有反馈,谢谢您花时间阅读本文。
答案 0 :(得分:6)
不,我认为如果没有破产,请不要修理它。
任何窗口系统在某种程度上都是OO。您可以处理由OS管理的窗口,您可以对其执行某些操作。无论您使用window->resize()
还是resize(window)
都无关紧要。这种句法重排显然没有价值。
但是,随着应用程序的增长,您可能会发现许多窗口大多相似且略有不同。最佳实现是附带特殊功能的样板基本功能。而这样做的方法是使用基类和多态。
所以,如果你能用OO重构程序更优雅,那就去吧。如果它成长为具有自然进化的OO范例,请遵循最佳实践并让它成为现实。但是,不要只是尝试兼容流行语。
答案 1 :(得分:2)
您需要考虑两件事:成本/收益分析和机会成本。
将代码更改为OO的成本是多少?有什么好处?如果后者超过前者,那么我倾向于改变它。
成本包括传统成本,如花费的时间,花费的钱等。优点包括更清洁的实施,将来更容易维护。无论其他成本和收益如何,都取决于您自己的情况。
但有一件事经常被忽视的是机会成本。 是一个应该在分析中考虑的成本。这是一个经济术语,意味着放弃了机会。
换句话说,如果您确实转换了代码,那么您的费用就包括您无法在当时执行其他操作。
经典例子。如果您进行转换并且客户决定不购买您的软件,因为您没有添加他们想要的功能,那么丢失的销售机会就是成本。
答案 2 :(得分:1)
这取决于您希望通过项目完成的任务。如果不使用C ++的OO功能对您有用,并且没有充分的理由可以改变,那么继续按照您的方式进行。另一方面,如果您想了解更多有关OOP的信息,并且您有时间申请OOP,那么将其重构为OO风格将为您提供一个很好的学习机会。
答案 3 :(得分:1)
我会遵循您使用的任何窗口管理器的最佳实践。大多数都使用OO样式,当您遵循其使用模式时,您将自动继承(!)。