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