混合使用过程式和面向对象编程

3

很久很久以前,我最初使用Basic在我的第一台BBC Model B上进行过程序化编程,之后在大学里也学了一点Pascal和汇编语言。

然后面向对象编程(OO)出现了,这似乎在各方面都更加合理,我用C++、Perl、Java、Ruby等语言都是采用的这种方式。

在停止了8年左右的非Web编程之后回到iPhone上,我发现Objective C非常容易掌握,但偶尔必须退出Objective C并转向纯C进行低级别的操作,这就又回到了过程式编程。

我想要的是一个关于如何混合面向对象和过程式样式的好指南,如何进行内存管理,是否应该将过程式部分封装在对象中等等。

此外,一个关于C良好的过程式编程风格的基本指南也会很有帮助,因为我甚至似乎无法再以过程式术语思考了。


这里有一个类似的问题,并提供了示例,https://dev59.com/FnRA5IYBdhLWcg3w2x0I - Richard Stelling
4个回答

4

我建议您使用面向对象编程作为最高级别的组织方式,使用过程式编程进行实现。 面向对象最擅长定义接口、组件之间的合同、将代码分割成连贯块等。

当程序员开始学习对象时,往往会热衷于使用对象,将所有东西都变成一个对象,即使一个简单的内置类型就可以胜任。每个数字都变成一个类,然后在这些类上添加方法,以防万一需要。这可能会成为一种拖延症,推迟你最终开始编写实际工作代码的时间点。


1
如果有帮助的话,可以将您的过程/函数视为静态类方法。您的内存引用范围略有不同,但并不多。如果您将函数限制为仅访问作为参数传递的数据,则更容易,因为您不必计算符号。
编辑:我应该澄清一下,我在这里是以一般方式谈论。我没有进行任何iPhone开发,因此无法就内存访问/管理方面的具体问题发表意见。

1
据我所知,面向对象编程本质上是将数据和对这些数据的操作绑定在一起。
C++和Objective-C已经提供了预先制作的机制来帮助您,但您仍然可以自己完成它。
许多C库只是将结构指针绑定为OO方法的第一个参数。您可以通过谷歌搜索“C面向对象编程”来找到更多信息。

0

不必按照过程式思维。将所有低级别的事情封装到类中。你可以使用Objective-C ++。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接