2017-02-25 1 views
-1

私はクラスを持つ機能について聞いたことがありますが、クラス外です。つまり、クラス実装ではこれを使用するので便利ですが、クラス本体にはありません。外側にあり、どこにもありません。 メンバー関数を書くのではなく、自由な関数を書いている点は何ですか?無料機能のポイントは何ですか?

ご回答ありがとうございます。

+0

'std :: malloc'はあなたの想像されたより良いパラレルユニバースのメンバーになるべきです、そしてそれがどのようにソフトウェアデザインを改善するでしょうか? –

答えて

5

フリー機能は、インタフェースのデカップリングと明瞭さをはるかに向上させます。ほとんどのアルゴリズムロジックがフリー関数によって提供される場合、データ構造には明確な目的と適切なインターフェースが必要です。その結果、カップリングを最小限に抑えるコードが得られます。これは、推論しやすく、テストしたり、依存したりするのが簡単です。

一般に、データ構造は可能な限り小さく、1つの単一の特定の目的を達成するのに必要な大きさでなければなりません。データ構造は合成を介して結合されるべきであり、ロジックは、可能な限りデータの公開インタフェースにアクセスする自由な関数によって提供されるべきである。

メンバー関数が便利なことも、もちろん前述のインタフェースを提供するために、一部メンバ関数を持っていることが必要であるが、それは滑りやすい斜面だし、悪いことをしたときにstd::stringのようなもので終わります。

+0

メッセージの最後の部分は分かりません: – FeelZoR

+2

@FeelZoR 'std :: string'は、最終的なインターフェースと状態の乱れを回避するゾンビの黙示録です。 –

+0

私たちはそれを避け、char配列を好むべきですか? – FeelZoR

2

関数が状態を保持する必要がない場合、それをクラスの一部にする理由はありません。

int add(int a, int b) { return a + b; } 

を考えてみましょ機能が独自にその仕事の罰金を行い 、それはクラスオブジェクトを必要としません。

+0

Mmh、ありがとう、ありがとう、よろしくね^^ – FeelZoR

関連する問題