Скажем, у вас есть модуль Fortran 90, содержащий множество переменных, функций и подпрограмм. В вашем заявлении USE
, с каким соглашением вы следуете:
- явно объявлять, какие переменные/функции/подпрограммы вы используете с синтаксисом
, only :
, напримерUSE [module_name], only : variable1, variable2, ...
? - Вставьте защитное покрытие
USE [module_name]
?
С одной стороны, предложение only
делает код немного более подробным. Тем не менее, это заставляет вас повторять себя в коде, и если ваш модуль содержит множество переменных/функций/подпрограмм, все начинает выглядеть непослушным.
Вот пример:
module constants
implicit none
real, parameter :: PI=3.14
real, parameter :: E=2.71828183
integer, parameter :: answer=42
real, parameter :: earthRadiusMeters=6.38e6
end module constants
program test
! Option #1: blanket "use constants"
! use constants
! Option #2: Specify EACH variable you wish to use.
use constants, only : PI,E,answer,earthRadiusMeters
implicit none
write(6,*) "Hello world. Here are some constants:"
write(6,*) PI, &
E, &
answer, &
earthRadiusInMeters
end program test
Обновление Надеюсь, кто-то скажет что-то вроде "Fortran? Просто перекодируйте его на С#!" поэтому я могу проголосовать за вас.
Обновление
Мне нравится Tim Whitcomb answer, в котором сравнивается Fortran USE modulename
с Python from modulename import *
. Тема, которая была ранее перенесена в стек:
-
'импортировать модуль или' из импорта модуля
- В ответе Марк Родди упомянул:
не использовать 'из импорта модуля *. Для любой разумный большой набор кода, если вы импортируете *, ваша вероятность будет закрепляя его в модуле, не удалось для удаления. Это потому, что это трудно определить, какие предметы используются в коде поступают из "модуля", делая его на восток, чтобы добраться до точки где вы думаете, что не используете больше, но его чрезвычайно трудно быть уверенным.
- В ответе Марк Родди упомянул:
-
Каковы хорошие эмпирические правила для импорта python?
- dbr answer содержит
не делать из x import * - он делает ваш код очень трудно понять, так как вы не можете легко увидеть, где метод пришел (из x import *; из y Импортировать *; my_func() - где my_func определяется?)
- dbr answer содержит
Итак, я склоняюсь к консенсусу о явном заявлении всех элементов, которые я использую в модуле, через
USE modulename, only : var1, var2, ...
И как Стефано Борини упоминает,
[if] у вас есть такой большой модуль, что вы чувствовать себя вынужденным добавить ТОЛЬКО, это означает что ваш модуль слишком велик. Разделите его.