风格指南

注意

这是一个活文档。欢迎您通过创建一个 问题 来提出对该工作流程的更改建议。

Fortran stdlib 风格指南

采用一致的风格可以通过选择良好的命名约定来提高代码的可读性。此外,在 CI 期间将运行风格检查以标记任何严重的不符合项。这使得代码审查讨论能够专注于语义和实质内容,而不是拘泥于细节。一致的空格使用,以及避免在行尾使用尾随空格,使 git diff 更易读。本风格指南是一个活文档,经过讨论并达成共识后,可能会采纳建议的更改。

使用(现代)标准 Fortran

  • 不要使用过时或已删除的语言特性 例如:commonpauseentry、算术 if 和计算 goto
  • 不要使用非标准语法和供应商提供的内在过程形式的供应商扩展 例如:real*8etime()

文件命名约定

  • 源文件最多应包含一个 programmodulesubmodule
  • 文件名应与程序或模块名称匹配,并具有文件扩展名 .f90.F90(如果需要预处理)。
  • 如果使用子模块将接口和实现分开,则实现子模块文件应与接口(父)模块具有相同的名称,但以 _implementation 结尾 例如:string_class.f90string_class_implementation.f90
  • 测试应添加到 test 子目录中,并与它们测试的模块具有相同的名称,并添加 test_ 前缀 例如:string_class.f90test/test_string_class.f90

缩进和空格

通过设置和遵循缩进和空格的约定,代码审查和 git-diffs 可以专注于所提议更改的语义,而不是风格和格式。

  • 每个 Fortran 结构体的正文应缩进 四个 (4) 个空格
  • 行长应限制在 80 个字符,并且不得超过 132
  • 请勿使用 Tab 键进行缩进
  • 请在提交代码之前删除尾随空格

变量和过程命名

  • 变量和过程名称以及 Fortran 关键字应使用小写字母书写
  • 变量和过程名称应由一个或多个用下划线分隔的完整单词组成,例如 has_failedhasfailed 更可取
  • 在传统情况下,如果使用适当的单词缩写,则可以省略下划线,例如 linspacelin_space 更可取

属性

  • 始终为虚拟参数指定 intent
  • 不要使用 dimension 属性来声明数组,因为它过于冗长。使用以下方法
    real, allocatable :: a(:), b(:,:)
    而不是
    real, dimension(:), allocatable :: a
    real, dimension(:,:), allocatable :: b
    在定义许多具有相同维度的数组时,如果它使代码更简洁,则可以将 dimension 用作例外。
  • 如果使用 optional 属性来声明虚拟参数,则它应位于 intent 属性之后。

结束块关闭语句

Fortran 允许在结束语句中包含程序单元的名称,以包含某些块结构或范围。此处采用的约定是在 end 语句中包含过程名称、module 名称和 program 名称,除非关闭语句可以合理地预期在同一屏幕或页面上,大约 25 行内。

使用 FORD 文档公共 API 代码

所有公共和受保护实体及其参数或参数应提供文档字符串。目前,这是使用 FORD 工具 完成的。有关编写 FORD 风格文档的帮助,请参阅 FORD wiki。以下两节与贡献新代码最相关

要编写新提案的“规范”(规范),请将其放在 FORD “页面” 目录中,位于 doc/specs/。要获得帮助,请参阅 “编写页面”“编写文档” 页面,位于 FORD wiki