隐式类型声明什么时候才是好的?

时间:2020-05-27 20:13:14

标签: fortran fortran77

我有一位写Fortran的同事,通常遵循F77标准。我不得不使用他们的一些源代码,我发现使用隐式类型声明(而不使用implicit none)确实令人困惑和沮丧。他们这样做的原因是“在程序开始时消除所有这些类型声明。”我认为,这是一个糟糕的折衷方案,因为它破坏了程序及其许多子程序的可读性和理解力。在Fortran程序和子例程中是否还有其他更合理的理由,包括<{>> 而不包括implicit none

3 个答案:

答案 0 :(得分:1)

完全清楚地说,依赖于隐式类型已被许多人反对。有充分的理由。但是,在某些情况下,有些人可能会认为隐式键入是两种弊端中的较小者。

隐式键入允许一个对象具有其名称在范围内不可访问的类型:

  implicit type(badexample) (d)

  type badexample
    integer :: neverever=4
  end type badexample

  call sub

contains

  subroutine reallybad(badexample)
    integer, optional :: badexample
! With the declaration above we can't declare a local variable of explicit
! type badexample:
!   type(badexample) dontdothis
    print*, dontdothis%neverever
  end subroutine reallybad

end

真的,这是使用隐式类型的一个不好的借口。可以通过其他设计选择来避免的一种。


在Fortran 77下,当然不能使用implicit none

答案 1 :(得分:1)

当您的代码是一堆打孔卡而不能掉落或打乱顺序时,减少行数的方法才有意义。在现代,没有必要进行隐式键入。

我有一个老警卫同事,不能劝阻他使用隐式打字。他声称对大多数变量使用隐式类型,而对不遵循匈牙利符号的少数变量使用显式类型会使这些变量更加突出,并有助于他更好地理解代码。

使用注释以提高可读性。那就是他们在那里的目的。

答案 2 :(得分:0)

好吧,我使用打孔卡,但通常在我的Fortran代码中也不使用隐式卡。但是,我现在的大部分Fortran编码只是编写数据的预处理器或后处理器。人们现在使用python的东西。我知道python,但是我在python中的编程技能并不那么好。因此,当您编写100-300行代码时,只有隐式的无人会很痛苦。我用它来使人们不会取笑我,但是对于短效的应用程序代码,隐式的买不到。恕我直言!