【发布时间】:2018-06-23 08:36:18
【问题描述】:
在他的演讲“编程的未来”中,Robert Martin 提到了the motives for structured, functional and object-oriented paradigms:
- 结构化编程:不要使用无拘无束的
goto; - 函数式编程:不要使用赋值;
- 面向对象编程:不要使用指向函数的指针。
但他提到的 OOP 背后的动机让我感到困惑。为什么 C# 作为一种面向对象的语言,会有委托(我的理解是函数指针)?
如果 OOP 本质上就是避免使用指向函数的指针,那么它们有什么问题?
【问题讨论】:
-
一切都是为了避免自己处理裸指针。内部?只有指针和goto。从第一个汇编语言出现之前就一直是这样,并且很可能会进入量子计算机时代。处理裸指针有很多问题。 hte .NET 设计团队希望通过不让您处理它们来避免所有这些。委托只是替代指针的众多事物之一。输出参数是另一个。
-
好吧。我们可以做任何事情。我们可以在 C# 中使用指针,在 Js 中使用赋值。任何事物。但是我们为什么不想这样做呢?有没有更好的方法?这几个问题是我们应该问自己的。 OOP 不是要避免使用指针,而是要以不需要任何函数指针的方式编写代码......
-
@Fabjan 在阅读了您评论的最后一句话后,我有一个“啊哈”的时刻,把所有东西都装好。很简单,谢谢!
标签: c# oop delegates function-pointers paradigms