linux - 什么时候程序源码文件末尾要有空行? 是怎么规定和考虑的
ringa_lee
ringa_lee 2017-04-17 11:47:23
[Linux讨论组]

有的编辑器和工具会检查这个, 有时候会给出提示, 是否有相应的标准规定?

ringa_lee
ringa_lee

ringa_lee

全部回复(2)
伊谢尔伦

这不是一个规定,而是一种约定。

一些早期的工具(编辑器/解释器/终端……等)会错误地认为:如果一个文件的结尾不是新行(没有回车或换行符)那么它读取到的内容不是正常结束,而是使用 ^Z(即 EOF Mark)结束的。这会导致这些工具不能正常工作。

一些编辑器,比如 Nano,会自动给每一个文档追加一个新行以避免这个问题。自然而然的,如果一个项目里有人使用了类似 Nano 的编辑器来写代码,他贡献的文件理所当然会有一个新行在结尾。那么制定代码规范的人也就理所当然的要求所有的人遵循这个约定。

虽然现在的编辑器大都先进到可以无视(自动处理)这个问题,但是留一个空行始终还是有一个巨大的好处。

假设文件 foo.txt 里的内容就是 foo,结尾没有新行,那么你在终端输出其内容的时候会是这样的:

$ more foo.txt
foo $ _

假设文件 bar.txt 里的内容是 bar,结尾有一个新行,那么你在终端输出其内容的时候就是这样的:

$ more bar.txt
bar
$ _

留意提示符的位置。

于是你可以想到,如果把上述两文件连接起来就会是这样的:

$ cat *.txt
foobar
$ _

但如果它们的结尾都有新行,那就不同了:

$ cat *.txt
foo
bar
$ _

Which one do you prefer?

天蓬老师

因为从逻辑上来讲,换行是属于上一行的,而不是属于下一行,虽然显示起来,换行会显示在下一行。

出现这个设计的历史背景是,在好多好多年以前,大家都在用终端,如果在终端打印一个文件是这样的:

user@localhost:~$ cat filename
This is the file body.
user@localhost:~$

如果文件末尾没有换行符:

user@localhost:~$ cat filename
This is the file body.user@localhost:~$

提示符会被显示到文件内容的后面,而不是下一行,这很不合逻辑。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号