2016-04-12 6 views
0

私はクラスの一部にいくつかの具体的なこと(たとえば何かを解析すること)をさせています。私は名前空間/クラスにメソッドを抽出したいと思います。これらのメソッドには状態が含まれていないので、3つのオプションがあります。 (いくつかの論理的な名前空間内)Functons、staticメソッドまたは通常のメソッド

  • 機能
  • 静的メソッド
  • 通常の方法

最善の解決策は何ですか:私は、それらを書くことができますか?

+0

あなたの任務の中で最高の成績を得るには、状況によっては最適な解決策が必要です。 – WhozCraig

+0

これは依存しますが、主にこれはコーディングスタイルの問題です。 – jotik

+3

Scott Meyersは、関数でなければならないものと、方法であるべきものを決定する方法の彼の「フローチャート」を示した興味深い記事を持っていました。 http://www.drdobbs.com/cpp/how-non-member-functions-improve-encapsu/184401197 – Joe

答えて

1

これは、カスケードロジック誰もが推奨していますほとんどです:

  1. あなたの関数は、別の名前空間のクラス、そして無料の機能に依存しない汎用的なアルゴリズムである場合。 (演算子やその他のフリー関数(例えばbegin()/end()など)を呼び出すことがあります)
  2. それは公開インタフェースに依存するだけで、同じ名前空間で自由に機能します。
  3. プライベートメンバーに依存しますが、オン状態ではない場合は、静的メソッドです。
  4. それ以外の方法はありませんが、メンバー機能にすることはできません。

あなたのコードはクラスからできるだけ切り離されています。

関連する問題