为什么build议在文件末尾有空行?

一些代码风格的工具推荐这个,我记得看到一些UNIX命令行工具警告缺less空行。

有一个额外的空行是什么原因?

如果文本文件中的最后一行数据没有以换行符或回车/换行符组合结束,许多旧的工具会出错。 他们忽略那条线,因为它是用^ Z(eof)来代替的。

除了在文本编辑器中移动到文件末尾时,它是一个更好的光标位置。

在文件的最后有一个换行符可以提供一个简单的检查,即文件没有被截断。

如果试图将两个文本文件连接在一起,如果第一个以换行符结尾,则会更加快乐。

出现文件末尾的空行,以便inputstream的标准读取将知道何时终止读取,通常返回EOF以表示已到达结尾。 大多数语言可以处理EOF标记。 因为这个原因,在DOS下,EOF标记是F6键或Ctrl-Z,对于nix系统,它是Ctrl-D。

大多数(如果不是全部的话)实际上会直接读取EOF标记,以便运行时库从input读取的function知道何时停止读取。 打开追加模式的stream时,将擦除EOF标记并将其写入,直到明确调用closures的EOF标记插入EOF标记。

较老的工具预计会有一个空行,然后是EOF标记。 现在,工具可以处理空行并忽略它。

如果附加到文件后面的参数也可以做成更清晰的差异,跟Python为什么在列表中允许尾随逗号相同?

另外当你修改文件并在文件末尾添加一些代码时 – diff(至less在标准configuration中是git diff)会显示你改变了最后一行,而你唯一做的事情就是添加一个换行符号。 所以CVS报告变得不太方便。

有些语言根据input行定义input文件,其中每个input行是一系列由回车符终止的字符。 如果语法如此定义,则文件的最后一个有效行必须以回车符结束。