ページ 11

関数に値を渡す時引数にするかセッターにするか

Posted: 2013年3月01日(金) 15:13
by 霜焼け
関数に値を渡す時、引数を使っているものとセッターを使っているものがありますが、どう使い分けているのでしょうか。
たとえば、DXライブラリの描画関数DrawGraph(...)には引数の中にTransFlag(透過色を有効にするかのフラグ)がありますが、描画モードをセットする関数SetDrawMode(...)も存在しています。
どちらも描画に関する設定なのに、なぜ片方は引数でもう片方はセッターなのでしょうか。
また引数とセッターそれぞれのメリットとデメリット、そしてどの場面でどちらを使うかなどご教示下さい。お願いします。

Re: 関数に値を渡す時引数にするかセッターにするか

Posted: 2013年3月01日(金) 16:33
by nil
DrawGraphとSetDrawModeの例で言うとすれば、
DrawGraph系関数の引数TransFlagはその処理一度きりのもの、と言いますかその関数コール一回のみに左右するものですが、
SetDrawModeの場合は次にSetDrawModeが呼ばれるまでの間設定された情報を保持します。

Re: 関数に値を渡す時引数にするかセッターにするか

Posted: 2013年3月01日(金) 19:02
by softya(ソフト屋)
個別に変更が必要のある可能性のあるものは引数に、グループで処理するものはSetDrawMode()などセッターで処理するのが適当思われます。
まぁ、元はといえばSetDrawMode()はDirectXのレンダリング ステート を変更するものなので、こういう形になっているんですけどね。
「レンダリング ステート (Direct3D 9)」
http://msdn.microsoft.com/ja-jp/library ... s.85).aspx

Re: 関数に値を渡す時引数にするかセッターにするか

Posted: 2013年3月02日(土) 21:05
by 霜焼け
なるほどグループで処理ということを考えていませんでした。
ありがとうございます