我有大量遗留代码要处理(Fortran F90).处理最困难的事情之一是每个文件包含少量的大量函数,每个函数都有很长的列表
use <module name>
Run Code Online (Sandbox Code Playgroud)
然后代码使用这些模块中定义的变量和数据结构.问题是它难以置信的困难,以确定这些变量最初定义/初始化,因为他们在定义一个对的use模块,并在代码初始化其他地方(这大约是100 000 LOC).
有没有办法在Fotran中提供命名空间解析?从阅读中,我猜不是,更一般地说,是否有一个很好的Fortran-Y方式来解决这类问题?
您可以从use语句中选择导入的内容,如下所示:
use foo, only : bar, baz
Run Code Online (Sandbox Code Playgroud)
在这种情况下,只导入bar和baz变量.这也提供了一种自我编写代码的方法,这看起来就像您正在寻找的那样.
要稍微扩展@SethMMorton告诉您的内容,您还可以重命名导入的项目
use foo, only : local_name=>bar, baz=>foo_baz
Run Code Online (Sandbox Code Playgroud)
不幸的是,Fortran没有提供太多的语言导向学科来做其他语言对命名空间的处理.通过在声明它们的模块的名称前面加上变量的重命名将完全是程序员的决定和责任.
当然,人们可以使用标准或管理实施的纪律,但编制者很少能够对其中任何一个做出很多帮助.
或者可以安慰自己,认为从模块中导出许多名称可能违反了良好的软件工程实践(封装,信息隐藏,你有什么),而你所处理的问题是早期的问题. ,纪律严明的一代开发人员.