-3

摘自 Robert Martin 所著的 Clean Code 一书:

在编程的早期,我们组成了我们的例程和子例程系统。然后,在 Fortran 和 PL/1 时代,我们组成了我们的程序、子程序和函数系统。如今,只有该功能从那些早期阶段幸存下来。

在我看来,这段摘录告诉我们例行公事是一件坏事,正在走出编程时代。

我做了一些搜索,发现Fortran中子程序和函数之间的区别是:

  • 子程序对输入变量进行一些操作,调用子程序的结果是修改了输入变量。
  • 函数将一个或多个参数作为输入并返回单个输出值。

虽然我没有写 Fortran 只写 C,但 C 支持的结构与 inint foo(int x)void foo(int* x).

引起我注意的是我从未听说过void foo(int* x)C 中的一个糟糕的约定,所以我想弄清楚 Robert Martin 的这段摘录是什么意思。

还有一个问题。从 OOP 的角度来看,如果我想在 C 中模拟 OOP,例程是不是函数的好选择?

4

1 回答 1

1

一旦允许函数不返回任何内容或丢弃函数结果,使用单独的语言结构基本上是多余的。AC 或 C++void函数实际上就像一个子程序,它只是看起来像一个函数并且使用相同的关键字。这样就省去了一个关键字的需要,语言更加统一。C 是当今实践中使用的大多数语言的语法起源。

于 2019-10-13T12:28:18.947 回答