罗伯特·马丁(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,那么例程是对函数的好选择吗?
答案 0 :(得分:1)
一旦您允许该函数不返回任何内容或丢弃该函数的结果,则使用单独的语言构造基本上是多余的。 C或C ++ void
函数实际上就像一个子例程,看起来就像一个函数,并且使用相同的关键字。因此,您省去了一个关键字的需要,并且语言更加统一。 C是当今实践中使用的大多数语言的语法起源。