在Modula-2和Oberon中,每个模块和过程声明必须以模块或过程的名称结束。 Pascal不需要它。我从来没有真正理解这一点的动机。有人可以开导我吗?
答案 0 :(得分:3)
在阅读了一些(我不是专家)后,我会打赌这只是函数的语法要求,以提高可读性。
我会更进一步,并用其他语言编写的大型,旧的,写得不好的程序/功能说,有时候这种语言不需要它。我经常看到:
int veryLongC++Function() {
...
...
... 3000 code lines
} //veryLongC++Function
因此,一个接近结尾的读者知道他们正在看什么。 8月在评论中提到,如果没有被编译器强制执行,那么在名称更改的情况下,这个问题就不那么强大了。
另一个重要方面是嵌套过程 - 这里显式结尾使事情更具可读性 - 例如checkout chapter 7 - 在声明之间和BEGIN
之前声明嵌套过程。语法使这看起来更好(在我看来)。
故事很长 - 我认为主要的好处是可读性。
答案 1 :(得分:2)
您可能会收到类似这样的信息:
MODULE A;
...
PROCEDURE B;
...
PROCEDURE C;
...
BEGIN (* C *)
...
END C;
BEGIN (* B *)
...
END B;
BEGIN (* A *)
...
END A.
在这种情况下,为了便于阅读,在代码末尾有三个主体(如果定义了嵌套过程和函数,则还有三个主体)。为了查看以END
子句结尾的那个,最好是编译器可以检查是否正确关闭了所有内容(如您所见,我什至把它作为注释,但是如果编译器接受它作为有效的标识符并检查以确保一切正确,则很好---在开头BEGIN
body子句中)