Language agnostic 什么';为什么要在代码文件的末尾多留一个空行?

Language agnostic 什么';为什么要在代码文件的末尾多留一个空行?,language-agnostic,coding-style,history,Language Agnostic,Coding Style,History,默认情况下,Eclipse和MyEclipse创建新的Java文件,在最后一个右大括号后面有一个额外的空行。我认为CodeWarrior在几年前也做过同样的事情,有些人在他们的代码中留下这样的空白行,要么是出于有意,要么是出于懒惰。因此,这似乎至少是一种适度普遍的行为 作为一名前人类语言编辑——主要是复印编辑报纸——我发现这些行看起来像是草率或意外,我想不出有什么理由把它们留在源文件中。我知道它们不会影响C风格语言(包括Java)的编译。拥有这些线路有什么好处?如果有,它们是什么?这不一定是历史

默认情况下,Eclipse和MyEclipse创建新的Java文件,在最后一个右大括号后面有一个额外的空行。我认为CodeWarrior在几年前也做过同样的事情,有些人在他们的代码中留下这样的空白行,要么是出于有意,要么是出于懒惰。因此,这似乎至少是一种适度普遍的行为


作为一名前人类语言编辑——主要是复印编辑报纸——我发现这些行看起来像是草率或意外,我想不出有什么理由把它们留在源文件中。我知道它们不会影响C风格语言(包括Java)的编译。拥有这些线路有什么好处?如果有,它们是什么?

这不一定是历史原因,但却是一个很好的原因,IMO:

它可以防止您忘记在文件末尾有一个尾随的换行符。编译器通常会对此发出警告,源代码管理系统也会发出警告,并且在添加换行符以消除编译器警告时,会将行显示为已更改


简而言之,它减少了噪音和不必要的SCM差异的可能性。

好的做法是使用换行符结束每一行,因为在解析代码时,可以使用一个简单的函数读取代码,该函数将根据这些换行符将文件拆分为行。如果没有空行,因此最后一行以换行符结尾,您将丢失该行上的所有字符。

这是历史记录,与用于文本处理的命令行实用程序中的常见错误有关。Unix系统上有许多用于处理文本的程序,其中大多数是逐行运行的。当最后一行不以换行结束时,可能会或可能不会有任何常见的命令行工具出现错误行为,但这种现象在历史上非常普遍,以至于其他工具开始警告这种情况


上一次我检查vim实际上无法保存一个不以换行符结尾的文件,甚至可以添加一个,无论您是否将其放在那里。

我没有足够的观点来评论,但我想说一点关于@Justin Smith语句的内容,“[vim将继续]甚至添加一个[换行符],无论您是否将其放在那里,”

我只是检查了VIM,而它确实有一个,<强> vim没有显示空白的换行符< /强>。如果在nano中打开vim保存的文件,nano将显示末尾有一个空白换行符。所以我决定看看如果我用vim手动创建一个新行会发生什么,nano显示有两个新行

对我来说,这很有意义,因为就像在文件结束之前关闭行一样,就像关闭HTML中的所有标记一样