【问题标题】:What's the reason for leaving an extra blank line at the end of a code file?在代码文件末尾留下一个额外的空白行的原因是什么?
【发布时间】:2010-03-08 15:56:03
【问题描述】:
默认情况下,Eclipse 和 MyEclipse 创建新的 Java 文件,在最后一个右大括号之后有一个额外的空行。我认为 CodeWarrior 几年前也做过同样的事情,有些人在他们的代码中留下这样的空白行要么是故意的,要么是懒惰的。因此,这似乎至少是一种适度普遍的行为。
作为一名前人类语言编辑——主要是复制编辑报纸——我发现这些行看起来很草率或意外,我想不出将它们留在源文件中的理由。我知道它们不会影响 C 风格语言的编译,包括 Java。拥有这些线路有什么好处,如果有,它们是什么?
【问题讨论】:
标签:
language-agnostic
coding-style
history
【解决方案1】:
它是历史性的,与用于文本处理的命令行实用程序中的常见错误有关。 Unix 系统上有许多用于处理文本的程序,其中大多数是逐行运行的。当最后一行没有以换行符结尾时,可能有也可能没有任何常见的命令行工具行为异常,但这种现象在历史上很常见,以至于其他工具开始警告这种情况。
最后我检查了vim实际上无法保存不以换行符结尾的文件,甚至不管你是否放在那里都添加一个。
【解决方案2】:
AFAIK,每行都使用换行符结束是一种很好的做法,因为在解析代码时,可以使用一个简单的函数来读取它,该函数会根据这些换行符将文件分成几行。如果没有空行,因此最后一行以换行符结尾,您将丢失该行上的所有字符。
【解决方案3】:
这不一定是历史原因,但这是一个很好的理由,IMO:
它可以防止您忘记在文件末尾有一个尾随换行符。编译器通常会对此发出警告,源代码控制系统通常也会发出警告,并且当您添加换行符以消除编译器警告时,会显示该行已更改。
简而言之,它减少了潜在的噪音和不必要的 SCM 差异。
【解决方案4】:
我没有足够的评论点,但我想对@Justin Smith 声明说点什么,“[vim will go] 甚至添加一个 [newline] 无论你是否把它放在那里,".
我刚刚检查了 vim,虽然它确实有一个,但 vim 不显示空白换行符。如果你在 nano 中打开用 vim 保存的文件,nano 会在末尾显示 有一个空白换行符。所以我决定看看如果我用 vim 手动创建一个新行会发生什么,nano 显示 有 2 个新行。
对我来说这是有道理的,因为就像在文件结束之前关闭行,就像关闭 HTML 中的所有标签。