fortran变量声明的好风格是什么?

Jan*_* M. 1 fortran coding-style fortran77

所以我需要声明很多变量,原始代码如下所示:

    DIMENSION energy_t(20000),nrt(20000),npsh(1000),xx(1000),yy(1000),
    :step(1000),stepz(1000),r1(1000),rr(1000),ic(1000),diffrr(1000)
Run Code Online (Sandbox Code Playgroud)

我把它重写为:

    DIMENSION
    :energy_t(20000),
    :nrt(20000),
    :npsh(1000),
    :step(1000),
    :r1(1000),
    :rr(1000),
    :ic(1000),
    :diffrr(1000)
Run Code Online (Sandbox Code Playgroud)

这被认为是好风格,还是有更好的方法?请注意,第二种方式允许对每个变量进行注释,如果我可以添加另一个变量,则不必使用行继续.

PS:有没有关于Fortran编程风格和良好实践的共识/风格圣经/广泛认可的来源?

Vla*_*r F 5

好的风格不是首先使用维度声明.特别是如果你使用隐式类型.每个变量都应该有一个声明的类型,最好将数组维放在那里.使用带有类型声明的属性(Fortran 90+).

real :: energy_t(20000), nrt(20000)
real, dimension(1000) :: npsh, xx, yy, step, stepz, r1, rr, ic, diffrr
Run Code Online (Sandbox Code Playgroud)

保持线不要太长.声明尺寸(形状)的两种方式都是可能的.

如果你需要Fortran 77,你会受到更多限制,但仍然如此

real energy_t(20000), nrt(20000)
real npsh(1000), xx(1000), yy(1000), step(1000), stepz(1000)
real r1(1000), rr(1000), ic(1000), diffrr(1000)
Run Code Online (Sandbox Code Playgroud)

可能更好.

尝试将相关变量分组到一行,将其他变量分组到不同的行.

我还建议声明parameter大小为1000和20000的常量.

  • 维度语句本身没有任何错误,但它确实倾向于与(不受欢迎的)隐式类型强烈耦合.此外,在声明中将类型和属性放在一起要比在代码中搜索以充分了解变量的含义要好得多.[不可否认,在F77中,属性较少,但仍然...... (2认同)
  • @PatronBernard我建议不要使用隐式输入. (2认同)