当前位置: 首页 > 面试题库 >

Java源文件末尾的空白行

吉俊德
2023-03-14
问题内容

在我当前的项目中,我们总是在Java源文件的末尾插入一个空的新行。我们还使用CheckStyle(具有错误级别)来强制执行此操作。

我一直在寻找这个主题很长时间,但是不幸的是,我找不到任何令人信服的理由。似乎其他开发人员对此无动于衷,因为他们只是选中了Eclipse
formatter中的一个复选框,并且它是自动完成的。但是我仍然不知道为什么需要它,为什么它很重要。所以我的问题是:

为什么在Java源文件末尾需要空行?它是当前的需要还是过去的遗物,在当前的代码库中是不受欢迎的?


问题答案:

我认为他们正在尝试确保每个文件都以尾随换行符结尾。这不同于以空行(也称为空换行符)结尾。

编辑:由于@Easy Angel在注释中简洁明了:尾随换行符=“ \ n”和空白行=“ \ n \ n”

我认为:

  1. 您的线索要么要求每个文件都以换行符结尾,要么被误解为要求每个文件都以空行结尾(即以换行符结尾的空行),否则

  2. 他们试图通过强制每个文件以空行结尾(又名以换行结尾的空行)来确保每个文件都以换行符结尾,从而确保文件以至少一个换行符结尾(并且可能多余的其他换行符-过度杀伤) ?)。

除非编辑器实际显示换行符,否则在某些编辑器中并不会始终清除文件:

  1. __根本 不结束 换行符,
  2. ENDS 与单个结尾的新行,或
  3. ENDS 的空白换行符,即2个尾随的换行符

我认为大多数现代源代码编辑器都会在末尾插入换行符。
但是,当使用较旧的更通用的编辑器时,
我将始终确保我的源代码文件(和一般的文本文件)始终以结尾的换行符结尾(根据我当时的编辑器的不同,偶尔会以空白行/空换行符出现)使用),因为:

  1. cat用于在命令行上显示文件时,如果文件缺少结尾的换行符,则下一个输出(例如,shell提示或脚本可能在文件之间输出的视觉定界符)将最终出现在最后一个非换行符之后而不是从换行符开始。通常,结尾的换行符使文件对用户和脚本更友好。

  2. 我相信某些编辑器(我不记得任何细节)会在文本文件缺少后缀时自动插入尾随的换行符。这将使其看起来像文件已被修改。如果您在不同的窗口中打开了一堆文件然后关闭所有文件,将会引起混乱-编辑器会提示您保存,但不确定是对文件还是对文件进行了“真正的更改”插入换行符。

  3. 有些工具(例如diff和一些编译器)会抱怨缺少尾随换行符。这是用户和工具可能必须应对的更多杂音。

编辑:

关于编辑者添加换行符而又看不到文件末尾是换行符还是空白换行符的问题,我刚刚测试了Vim,Eclipse和Emacs(在Windows系统上使用Cygwin):我打开了一个新文件,键入“
h”“ e”“ l”“ l”“ o”并保存,而无需按[ENTER]。我用检查了每个文件od -c -t x1

  1. Vim 确实 添加了尾随换行符。
  2. Emacs 确实 添加了结尾的换行符。
  3. Eclipse 没有 添加尾随换行符。

  1. Vim的 让我上下光标到“你好”下一个空行。
  2. Emacs 确实 允许我将光标向下移动到“ hello”下的空白行。
  3. Eclipse中 没有 让我上下光标到“你好”下一个空行。

随便翻译。

我的个人做法是尝试确保文本文件以尾随换行符结尾。我只是觉得情况确实如此,对人员和工具而言,这是 最没有惊喜
的。在这方面,我不会将源文件与文本文件区别对待。

Google证明了这一点:

在本次编辑中,其中的热门歌曲均谈到了有关C编译器,svn(由于diff),diff等导致的缺少尾随换行符的警告。我认为人们普遍希望文本文件(包括源文件)以尾随换行符,并且当它们趋向于出现时,就不会感到惊讶(且噪音较小)。

最后,这很有趣:

清理没有尾随换行符的
文件文本文件的所有行都应以换行符(即\ n)结尾。这由POSIX声明,即文本文件是

包含以零行或更多行组织的字符的文件。
反过来,一行定义为
*零个或多个非字符加一个终止字符的序列。

但是
,这只是我的个人习惯。我很高兴与提出要求的任何人分享我的观点,但是我不希望对此提出任何要求。我觉得这不值得强制执行,就像我在这里说的那样:

虽然我是一个全力以赴的人,但我也反对微观管理每一个样式。拥有大量的编码约定,尤其是在其中一些看起来有些随意的情况下,这是阻止人们遵循它们的一部分。我认为应该将编码准则简化为可改善-
ilities的最有价值的实践。通过强制执行此操作,可读性,可维护性,性能等有多少改进?



 类似资料:
  • 我正在使用2018.1.5社区版的intellij编辑器来编辑纯文本文件。 我没有使用项目。我在Linux上启动它,如下所示: 其中my_file.mpl是纯文本文件。 这很有效,除了一个大问题。 我需要在一些行的末尾留一个空白。i、 在文件中某行的行字符后,我插入一些白色。通过执行“查看”,我看到空间在那里- 但一旦我保存了文件,这些空白就会从行尾删除。 这给我带来了一个问题(由于其他原因,当其

  • 目前我正在测试PhpStorm IDE。它真的很棒,除了一个功能。它不会从文件末尾删除空行。现在删除不需要的空格,但末尾的空行不会删除。 这对我来说真的很烦人。我能改变这种行为吗?

  • 我正在尝试创建一个动画,其中包含所有卡片的div从右到左滑动,这是我已经实现的。 问题是在div的末尾和重置时有一个巨大的白色空隙,我通过指定在时div应该已经翻译了来解决这个问题,但是这会在轮播重置时引起口吃。 有没有我可以把动画重置为0%而不会造成口吃的效果?代码在下面

  • 我正在尝试创建一个动画,其中包含所有卡片的div从右到左滑动,这是我已经实现的。 问题是在div的末尾和重置时有一个巨大的白色空隙,我通过指定在时div应该已经翻译了来解决这个问题,但是这会在轮播重置时引起口吃。 有没有我可以把动画重置为0%而不会造成口吃的效果?代码在下面

  • 问题内容: 我正在解析CSV文件,但是最后一行的最后9列为空,只有一行,并且用逗号分隔的字符串会忽略其余的空列。 这是演示此代码的代码: 列的大小为20,应为29。任何想法? 问题答案: 查看有关以下内容的文档: 该方法的工作方式就像通过调用带有给定表达式且限制参数为零的二参数拆分方法。因此,结尾的空字符串不包括在结果数组中。 因此,您需要查看其他方法的选项 limit参数控制应用图案的次数,因此

  • 问题内容: 我正在使用CSS属性, 如果我使用=>它会在之前打印一个额外的空白页 如果我使用=>,它将在以后打印额外的空白页。 如何避免这种情况? 问题答案: 您也许可以添加 因此最后一个元素将不会获得额外的分页符。 请注意,如果您以浏览器的目标为目标,则IE8不支持:last-child选择器。