簡體   English   中英

什么時候隱式類型聲明是好的?

[英]When is implicit type declaration ever good?

我有個同事寫的是Fortran,一般都是按照F77的標准。 我不得不使用他們的一些源代碼,我發現使用隱式類型聲明(而不是使用implicit none )確實令人困惑和沮喪。 他們這樣做的原因是“消除我程序開頭的所有類型聲明”。 在我看來,這是破壞程序及其許多子例程的可讀性和理解性的糟糕權衡。 在 Fortran 程序和子例程中是否有任何其他更有效的理由包含implicit none

需要明確的是,許多人不贊成依賴隱式類型。 有充分的理由。 然而,在一種情況下,有些人可能認為隱式類型是兩害相權取其輕。

隱式類型允許一個人擁有一個 object,它是一種名稱在 scope 中不可訪問的類型:

  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了。

當您的代碼是一堆不得丟棄或打亂順序的打孔卡時,減少行數的方法很有意義。 在現代,沒有理由使用隱式類型。

我有一個老同事,他不能被勸阻而不要使用隱式類型。 他聲稱,對大多數變量使用隱式類型,而僅對少數不遵循匈牙利符號的變量使用顯式類型,可以使這些變量更加突出,這有助於他更好地理解代碼。

使用注釋以提高可讀性。 這就是他們在那里的目的。

好吧,我使用了打孔卡,但我通常也在我的 Fortran 代碼中使用 implicit none。 然而,我現在的大部分 Fortran 編碼只是編寫數據的預處理器或后處理器。 人們現在使用的東西 python。 我知道 python 但我在 python 的編程技術不是很好。 因此,當您編寫 100-300 行代碼時,只有隱式 none 會很痛苦。 我使用它是為了讓人們不會取笑我,但對於簡短的實用程序代碼,隱含的沒有給你帶來什么好處。 恕我直言!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM