罗伯特·马丁(Robert Martin)的意思是“只有功能可以在编程的早期生存,而不是例行的”

时间:2019-10-13 11:23:56

标签: oop language-agnostic language-design paradigms language-history

罗伯特·马丁(Robert Martin)所著的《清洁代码》(Clean Code)节选:

  

在编程的初期,我们组成了例程系统   和子例程。然后,在Fortran和PL / 1时代,我们组成了   程序,子程序和功能的系统。如今只有   功能从早期就可以保留下来。

我认为,这段摘录告诉我们例程是一件坏事,并且已经脱离了编程时代。

我进行了一些搜索,发现在Fortran 中子例程和函数之间的区别是:

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

尽管我不是写Fortran而是只写C,但是C支持的结构与int foo(int x)void foo(int* x)中相同。

引起我注意的是,我从未听说过void foo(int* x)是C语言中的一个错误约定,所以我想弄清楚罗伯特·马丁(Robert Martin)的摘录是什么意思。

还有一个问题。从OOP的角度来看,如果我想用C模拟OOP,那么例程是对函数的好选择吗?

1 个答案:

答案 0 :(得分:1)

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