不喜欢广告? 无广告 今天

Scala 代码格式化程序(Scalafmt 风格)

开发人员文本
广告 移除?
广告 移除?

指导

Scala 代码格式化器(Scalafmt 风格)

Scala 代码格式化程序(Scalafmt 风格)

粘贴原始的 Scala 代码,即可获得符合 Scalafmt 风格的格式化代码——2 个空格缩进、平衡的大括号、标准化的操作符间距、排序的导入以及一致的尾随逗号。输出是确定性的,因此相同的输入始终产生相同的输出,这使得代码审查中的差异更清晰,并且无需再为缩进等细节争论。

如何使用

  1. 将您的 Scala 代码粘贴到输入框中,或加载示例以查看其工作方式。
  2. 选择缩进样式(2 个空格是 Scalafmt 的默认设置)以及最大列宽(80、100、120 或 160)。
  3. 切换您想要的选项:多行列表中的尾随逗号、排序/分组的导入、操作符间距、注释保留以及空行合并。
  4. 点击 格式. 使用复制按钮复制结果,或下载为 .scala 文件。

特征

  • Scalafmt 默认风格 —— 与官方 scalafmt 工具使用的约定保持一致,包括缩进、大括号处理以及二元操作符间距。
  • 可配置的缩进 —— 选择 2 个空格、4 个空格或制表符,以匹配项目的风格指南。
  • 最大列宽 —— 选择 80、100、120 或 160,以适应团队的换行策略。
  • 排序并分组的导入 —— 按字母顺序重新排列导入,并将它们分为标准库、第三方和本地三个部分,组之间用空行分隔。
  • 尾随逗号 —— 为多行参数和参数列表添加尾随逗号,以使版本控制差异更清晰。
  • 注释保留 —— 保留行注释、块注释和 Scaladoc,同时仍对周围代码进行整理。
  • 字符串和插值安全 —— 重格式化不会修改字符串、字符字面量、三引号字符串或插值的内容。 s"..." / f"..." 插值
  • Scala 3 兼容 —— 支持现代 Scala 3 关键字如 given, using, then, enum,并且 derives.
  • 完全在浏览器中运行 —— 无需上传,无需服务器往返,无需数据收集。您的代码永远不会离开您的机器。

常见用例

  • 在将代码片段粘贴到 Slack 线程、Stack Overflow 回答或技术博客文章之前,先进行格式化。
  • 对尚未配置 scalafmt 的旧项目进行格式标准化。
  • 预先格式化生成的代码(如宏输出、由模式推导出的案例类等),使其看起来像手动编写的 Scala 代码。
  • 在多个作者贡献的文件中统一风格,每个贡献者使用略有不同的 IDE 设置。
  • 在不启动 sbt 或 Scala 构建流程的情况下,对小规模重构进行快速检查。

常问问题

  1. 什么是 Scalafmt 以及为什么一致的 Scala 格式化很重要?

    Scalafmt 是 Scala 生态系统的事实标准代码格式化工具。它在整个代码库中强制执行单一、确定性的风格,从而将格式化问题从代码审查讨论中移除,减少因空白字符变化引起的噪音差异,并帮助新贡献者融入项目。一致的格式化也使得扫描陌生代码更容易,因为缩进和间距始终具有相同的含义。

  2. 为什么 Scalafmt 默认最大列宽为 80?

    80 列的传统可以追溯到早期的终端和穿孔卡片,但至今仍被保留,因为较窄的行在并排差异、代码审查工具和分屏编辑器中更易阅读。80 列限制也鼓励使用更短的标识符、更少的嵌套表达式以及更频繁地提取辅助方法。许多团队将此限制放宽到 100 或 120 列,这也是现代格式化工具允许用户配置该值的原因。

  3. 什么是尾随逗号以及它们有什么用?

    尾随逗号是多行列表、参数列表或参数列表中最后一个元素之后的逗号。它们在格式化工具中变得普遍,因为它们使基于行的差异更清晰:添加新元素只需增加一行,而无需修改前一行以添加逗号。尾随逗号也使得重新排序行更容易,因为每个元素都以相同的方式结束。Scala 自 2.12.2 版本起就支持参数和参数列表中的尾随逗号。

  4. 为什么导入通常被分为标准库、第三方和本地?

    按来源分组导入是一个长期存在的惯例,源自 Go 和 Python(isort)等语言。它使依赖关系的来源一目了然:标准库导入排在最前,接着是第三方库,最后是项目内部的代码。组之间的空行作为视觉锚点,使审查者能够快速识别新增的外部依赖,而这通常是值得讨论的信号。

  5. 语法格式化和语义格式化之间的区别是什么?

    语法格式化工具仅根据源代码文本重新排列空白、换行和缩进——它不需要理解类型、解析符号或运行编译器。相比之下,语义格式化工具可以重命名标识符、根据使用频率重新排列方法或移除未使用的导入,因为它可以访问编译器对程序的视图。Scalafmt 主要为语法格式化,这使其在不完整或无法编译的代码上运行时快速且安全。

想要享受无广告的体验吗? 立即无广告

安装我们的扩展

将 IO 工具添加到您最喜欢的浏览器,以便即时访问和更快地搜索

添加 Chrome 扩展程序 添加 边缘延伸 添加 Firefox 扩展 添加 Opera 扩展

记分板已到达!

记分板 是一种有趣的跟踪您游戏的方式,所有数据都存储在您的浏览器中。更多功能即将推出!

广告 移除?
广告 移除?
广告 移除?

新闻角 包含技术亮点

参与其中

帮助我们继续提供有价值的免费工具

给我买杯咖啡
广告 移除?