自动将冗长的 Java 代码重新格式化为 80 列并且仍然可以编译? [复制]

Posted

技术标签:

【中文标题】自动将冗长的 Java 代码重新格式化为 80 列并且仍然可以编译? [复制]【英文标题】:Automatically reformat long-lined Java code to 80 columns and still compile? [duplicate] 【发布时间】:2010-11-10 11:23:39 【问题描述】:

我的团队正在几个不同的 IDE 中开发 Java 代码,这些 IDE 具有不同的列数。到目前为止,它运行良好,但我们被要求将可编译代码交付给合作伙伴,其源代码限制为 80 列。我们希望出于专业的礼貌这样做,但我们不能/不愿意每天使用 80 列的有限代码。是否有任何可用的工具可以获取 Java 代码,并智能地添加换行符以使其适合 80 个字符并且仍然可以正确编译?理想情况下,我希望它是我们构建过程中更自动化的一步,递归地遍历 .java 文件的源目录并生成具有新格式的副本。

我对 80 列代码或执行或不自动换行的编辑器的优点不感兴趣,只是想看看是否有一种快速解决方案可以让每个人都开心,而无需任何人改变他们的方式东西。

【问题讨论】:

如果您不愿意使用 80 cols 宽度,那么您将提供的不是礼貌,而是自动拆分代码,不一定是人性化/友好的。虽然它可能适合 80 列,但结果并不总是有用。无论如何,这只是一个评论。 【参考方案1】:

Intellij 和 eclipse 以及几乎所有 IDE 都可以做到这一点。但是……

也许您想问自己是否要自动化,即使您以自动化方式(例如 maven)执行此操作,代码也可能以比以前更难阅读的方式分解,它可以在一个重要的行或方法的中间中断,即使它编译你也不希望它。

我们过去所做的是用 eclipse 或 intellij 的设置设置几个 .xml 文件(它们都允许您导出设置),然后使用 maven 使用 checkstyle 插件强制开发人员进行此设置;它将允许您每天都这样做,并且始终由开发人员决定代码何时应该中断。

最后,也许您想使用 100 或 120,它们是新的 80。

【讨论】:

+1 表示“100 或 120 是新的 80”。喜欢它。【参考方案2】:

它不像你喜欢的那样自动化,但是在 Eclipse 中你可以定义一个 80 列的配置文件(Preferences -> Java -> Code Style -> Formatter),然后在 Package Explorer 中,右键单击你的根包,并选择来源->格式。

【讨论】:

谢谢;在四处询问之后,这听起来像是人们愿意做的事情。 (特别感谢您没有讲授 80 列代码的优点/缺点) 不客气。我可以看到,在其他情况下,对它有点教条,但你显然不是在提倡 80 列;这只是你必须做的事情,并希望以最不痛苦的方式去做。乐于助人。 您可以从命令行运行 Eclipse 格式化程序:blogs.operationaldynamics.com/andrew/software/java-gnome/…【参考方案3】:

我建议在 Eclipse 中使用代码格式化程序来处理 80 列问题。

然后确保您没有遗漏任何内容 - 查看 checkstyle 以了解您是否遵守了这些标准

【讨论】:

【参考方案4】:

任何现代 IDE 都会根据您喜欢的样式自动重新格式化,但我只会对严重未格式化的代码执行此操作,否则它可能会看起来不太可读。特别是如果原作者为了清楚起见做了很多自定义格式,结果会丢失。

我支持将字符数改为 100-120 个字符的建议。 80 个字符的限制适用于 CRT 终端(24 行 x 80 列)和1928 IBM punch card standard。

【讨论】:

是的,已经有人提出了反对意见,即预先美化的代码会很丑,但是收到代码的人并不在意:由于各种原因,他必须使用 80-字符终端读取。

以上是关于自动将冗长的 Java 代码重新格式化为 80 列并且仍然可以编译? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

将同步代码重新格式化为异步

VSCode 将多行代码自动格式化为一行代码

如何将文本重新格式化为不同的模式?

如何将间隔类型格式化为 HH:MM 格式?

如何在 Eclipse PDT 中重新格式化多行注释?

重新排列某些列和行