在Modula 2和Oberon中,每个模块和过程声明必须以模块或过程的名称结尾。它在Pascal中是不需要的。我从来没有真正理解过这样做的动机。有没有人能开导我?
发布于 2018-05-29 22:58:20
在读完一些(我不是专家)后,我打赌这只是函数的语法要求,以获得更好的可读性。
我将更进一步,在其他语言中使用大型的、旧的、写得很差的过程/函数,这有时是在没有语言要求的情况下完成的。我经常看到:
int veryLongC++Function() {
...
...
... 3000 code lines
} //veryLongC++Function因此,跳到末尾的读者知道他们看到的乱七八糟的东西。奥古斯特在评论中提到,如果不是由编译器强制执行-在名称更改的情况下,这就不那么健壮了。
另一个重要的方面是嵌套过程-这里显式的结尾使事情更具可读性-例如签出chapter 7 -嵌套过程在声明之间和BEGIN之前声明。语法让这看起来好多了(在我看来)。
长话短说-我认为主要的好处是可读性。
发布于 2020-02-29 02:00:03
你可能会得到这样的结果:
MODULE A;
...
PROCEDURE B;
...
PROCEDURE C;
...
BEGIN (* C *)
...
END C;
BEGIN (* B *)
...
END B;
BEGIN (* A *)
...
END A.在这种情况下,为了可读性,在代码的末尾有三个主体(如果定义了嵌套过程和函数,还会有更多主体)。为了查看哪一个是以END子句结尾的标识符,最好是编译器能够检查您是否正确地结束了内容(如您所见,我甚至将它-作为注释,但如果编译器接受它作为有效的标识符并进行检查以确保内容正确匹配-在start BEGIN body子句中),那就更好了。
https://stackoverflow.com/questions/50587240
复制相似问题