Когда неявное объявление типа может быть хорошим? - PullRequest
1 голос
/ 27 мая 2020

У меня есть коллега, который пишет Fortran, как правило, по стандарту F77. Мне приходилось работать с некоторыми из их исходных кодов, и я считаю использование неявных объявлений типов (без использования implicit none) действительно запутанным и разочаровывающим. Причина этого в том, чтобы «исключить все объявления этих типов в начале моей программы (программ)». На мой взгляд, это плохой компромисс для ухудшения читабельности и понимания программы и множества ее подпрограмм. Существуют ли другие, более веские причины для , а не , включая implicit none в программах и подпрограммах Fortran?

Ответы [ 3 ]

1 голос
/ 28 мая 2020

Если ваш код представляет собой стопку перфокарт, которую нельзя ронять или выводить из строя, методы уменьшения количества строк имеют смысл. В наше время нет причин для неявной типизации.

У меня был старый коллега-стражник, которого нельзя было отговорить от использования неявной типизации. Он утверждал, что использование неявной типизации для большинства переменных и явной типизации только для тех немногих переменных, которые не соответствуют венгерской нотации, делает эти переменные более заметными и помогает ему лучше понять код.

Используйте комментарии для удобства чтения. . Вот для чего они нужны.

1 голос
/ 28 мая 2020

Для полной ясности: полагаться на неявную типизацию многие не одобряют. По уважительной причине. Однако есть один случай, когда некоторые могут рассматривать неявную типизацию меньшее из двух зол.

Неявная типизация позволяет иметь объект, который имеет тип, имя которого недоступно в области:

  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.

0 голосов
/ 01 июня 2020

Ну, я использовал перфокарты, но обычно я также неявно использую none в моих кодах Fortran. Однако большая часть моего программирования на Фортране сводится к написанию препроцессора или постпроцессора данных. Вещи, которые сейчас используют люди python. Я знаю python, но мои навыки программирования на python не так хороши. Поэтому, когда вы пишете 100–300 строк кода, только неявное «ни одно» не может быть проблемой. Я использую его, чтобы люди не смеялись надо мной, но для коротких служебных кодов подразумевается, что никто ничего не купит. имхо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...