2

処理すべき大量のレガシー コードがあります (Fortran F90)。対処するのが最も難しいことの 1 つは、各ファイルに少数の大規模な関数が含まれており、各関数に長いリストが含まれていることです。

use <module name>

コードは、これらのモジュールで定義された変数とデータ構造を使用します。問題は、これらの変数がモジュールの1 つで定義さuseれ、コード内の別の場所 (約 100 000 LOC) で初期化されるため、これらの変数が最初に定義/初期化される場所を特定するのが非常に難しいことです。

Fotran で名前空間を解決する方法はありますか? もっと一般的には、この種の問題を回避するための適切な Fortran-Y の方法はありますか?

4

2 に答える 2

5

@SethMMortonがすでにあなたに言ったことを少し拡張するために、インポートされたアイテムの名前を変更することもできます

use foo, only : local_name=>bar, baz=>foo_baz

残念ながら、Fortran は、他の言語が名前空間で行うことを行うための言語指向の規律をあまり提供していません。変数が宣言されているモジュールの名前をプレフィックスとして変数の名前を変更することは、完全にプログラマーの決定と責任です。

もちろん、標準または管理によって強制された規律を使用することはできますが、コンパイラがそれらのいずれかを支援できることはめったにありません。

または、モジュールから多くの名前をエクスポートすることはおそらく優れたソフトウェア エンジニアリング プラクティス (カプセル化、情報隠蔽、what-have-you) の違反であり、対処している問題は以前に作成された問題であると考えて、自分を慰めることができます。 、規律の緩い世代の開発者。

于 2013-11-11T17:08:54.637 に答える