9

.hrlファイルを何に使用するべきかについて少し混乱しています。.hrlファイルには有効なErlangコードを含めることができ、-includeディレクティブを使用すると、.hrlファイル内のコードがそれを含むモジュールに本質的に挿入されることを私は理解しています。

.hrlでは、これらのファイルにはどのようなコードを入れるのが適切でしょうか? Erlang のプログラミング ルールでは、レコードに関して次のように規定されています。

レコードが複数のモジュールで使用される場合、その定義は、モジュールからインクルードされるヘッダー ファイル (サフィックス .hrl 付き) に配置する必要があります。

その結果、コードでこれを行う習慣ができました。ただし、レコードのインスタンス化関数や比較関数、型定義などをヘッダーにも配置するのが好きです (これは C で行うようなものだからです)。これはフォームが悪いのでしょうか?.erl複数のモジュールで使用されている場合でも、型をファイルからエクスポートする必要がありますか? 利用可能な Erlang ヘッダーに関するベスト プラクティスに関するドキュメントはないようです。

4

3 に答える 3

12

C と同様に、include ステートメントは文字通り、インクルードされたファイルの内容を erl ファイルに追加します。したがって、実際のコードを hrl ファイルに配置すると、そのコードが含まれるすべての場所にコピーされます。これにより、すべての Erlang モジュールで不要な機能の重複が発生します。

実際の Erlang コードを独自の erl モジュールに配置し、レコード定義、型指定、または共通マクロを hrl ファイルに配置します。レコード定義と型指定はバイナリ ファイルにコンパイルされないため、複数のファイルに安全に含めることができます。

于 2013-05-06T18:33:28.130 に答える