関数に値を渡す時、引数を使っているものとセッターを使っているものがありますが、どう使い分けているのでしょうか。
たとえば、DXライブラリの描画関数DrawGraph(...)には引数の中にTransFlag(透過色を有効にするかのフラグ)がありますが、描画モードをセットする関数SetDrawMode(...)も存在しています。
どちらも描画に関する設定なのに、なぜ片方は引数でもう片方はセッターなのでしょうか。
また引数とセッターそれぞれのメリットとデメリット、そしてどの場面でどちらを使うかなどご教示下さい。お願いします。
関数に値を渡す時引数にするかセッターにするか
Re: 関数に値を渡す時引数にするかセッターにするか
DrawGraphとSetDrawModeの例で言うとすれば、
DrawGraph系関数の引数TransFlagはその処理一度きりのもの、と言いますかその関数コール一回のみに左右するものですが、
SetDrawModeの場合は次にSetDrawModeが呼ばれるまでの間設定された情報を保持します。
DrawGraph系関数の引数TransFlagはその処理一度きりのもの、と言いますかその関数コール一回のみに左右するものですが、
SetDrawModeの場合は次にSetDrawModeが呼ばれるまでの間設定された情報を保持します。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: 関数に値を渡す時引数にするかセッターにするか
個別に変更が必要のある可能性のあるものは引数に、グループで処理するものはSetDrawMode()などセッターで処理するのが適当思われます。
まぁ、元はといえばSetDrawMode()はDirectXのレンダリング ステート を変更するものなので、こういう形になっているんですけどね。
「レンダリング ステート (Direct3D 9)」
http://msdn.microsoft.com/ja-jp/library ... s.85).aspx
まぁ、元はといえばSetDrawMode()はDirectXのレンダリング ステート を変更するものなので、こういう形になっているんですけどね。
「レンダリング ステート (Direct3D 9)」
http://msdn.microsoft.com/ja-jp/library ... s.85).aspx
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。