2

実装ファイル内でのみ使用されるヘルパー関数は、ヘッダー ファイルの宣言から除外する必要がありますか?

ヘルパー関数とは、クラスに密接に関連付けられている便利な関数を意味しますが、クラスの操作を表しておらず、メンバー変数へのアクセスを必要としないため、メソッドではありません。

一方では、それらをヘッダー ファイルに含めると、ヘッダー ファイルは、対応する C++ 実装の包括的なリファレンスになります。一方で、一貫性を維持するためのコードがもう 1 つ導入されています。さらに重要なことに、ヘルパー関数を含めると、関数が他のコンテキストで実行されることを意図していないという意味で、抽象化のレイヤーの小さな違反が助長されます。ヘルパー関数自体は、動作するクラスのカプセル化を壊していません。

4

2 に答える 2

9

一方では、それらをヘッダー ファイルに含めると、ヘッダー ファイルは、対応する C++ 実装の包括的なリファレンスになります。

それはヘッダーファイルの目的ではありません。ヘッダー ファイルは、実装ではなくインターフェイスの参照と見なされます。実装の詳細の一部が漏れることがありますが、これは可能な限り回避する必要があります。

だからあなたの見出しの質問に答えるために:はい。

于 2012-07-16T01:16:31.320 に答える
0

実装の一部でのみ使用される場合は、メインのヘッダー ファイルから除外する必要があります。ただし、これらの機能をテストしたい場合は、それらへの参照を別のヘッダーファイルに追加する必要があります。

それらが実装の複数の部分で使用される場合、それらは共有できるように独自の内部ヘッダー ファイルに属します。

于 2012-07-16T01:18:44.533 に答える