首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >面向对象编程

面向对象编程
EN

Stack Overflow用户
提问于 2010-09-07 10:56:33
回答 4查看 252关注 0票数 5

我正在用C++开发一个项目。我意识到我的程序不是面向对象的。

我有一个main.cpp和几个不同用途的头文件。每个头文件基本上都是相关函数的集合,其中包含一些全局变量来保存数据。我还有一个用于管理窗口的windowing.h。它包含winMain()和winProc()。当事件发生(比如点击按钮)或者需要信息(比如“这个窗口有多大?”)时,它会调用驻留在我的main.cpp中的函数。这些函数是在windowing.h中包含的一个单独的.h文件中声明的。

是否值得将其更改为OO?这项工作值得吗?有没有更好的方法可以在不做太多更改的情况下构建程序?

欢迎所有反馈,感谢您抽出时间阅读本文。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-09-07 11:05:56

不,我想如果它没坏,就别修了。

任何窗口系统在某种程度上本质上都是面向对象的。您拥有操作系统管理的窗口的句柄,并且可以在该窗口上执行某些操作。您使用的是window->resize()还是resize(window)并不重要。显然,这种语法重排没有任何价值。

但是,随着应用程序的增长,您可能会发现许多窗口都很相似,但又略有不同。最好的实现是附加特殊功能的样板基本功能。实现这一点的方法是使用基类和多态。

所以,如果你能用OO重构程序,让它变得更优雅,那就去吧。如果它随着自然进化而成长为OO范例,遵循最佳实践并顺其自然。但是,不要只是试图满足时髦的要求。

票数 6
EN

Stack Overflow用户

发布于 2010-09-07 11:16:09

你需要考虑两件事:成本/收益分析和机会成本。

将您的代码更改为面向对象的成本是多少?好处是什么?如果后者比前者更重要,那么我倾向于改变它。

成本包括花费的时间、花费的金钱等传统成本。好处包括更干净的实现,使将来的维护更容易。无论其他成本和收益是什么,都取决于您自己的情况。

但有一件事经常被忽视,那就是机会成本。这是一个应该在您的分析中考虑的成本。这是一个经济学术语,意思是放弃的机会。

换句话说,如果你确实转换了你的代码,你的成本包括你不能在那段时间做其他事情。

经典的例子。如果您进行了转换,而客户因为您没有添加他们想要的功能而决定不购买您的软件,那么失去的销售机会就是成本。

票数 2
EN

Stack Overflow用户

发布于 2010-09-07 11:06:17

这取决于你想要用这个项目完成什么。如果没有使用C++的面向对象特性,并且没有很好的理由进行更改,那么继续按照您要做的方式进行。另一方面,如果您想了解更多关于OOP的知识,并且您有时间应用于OOP,那么将其重构为更多的OO风格将为您提供一个很好的学习机会。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3655445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档