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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
霜焼け

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

#1

投稿記事 by 霜焼け » 7年前

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

nil
記事: 428
登録日時: 8年前

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

#2

投稿記事 by nil » 7年前

DrawGraphとSetDrawModeの例で言うとすれば、
DrawGraph系関数の引数TransFlagはその処理一度きりのもの、と言いますかその関数コール一回のみに左右するものですが、
SetDrawModeの場合は次にSetDrawModeが呼ばれるまでの間設定された情報を保持します。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

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

#3

投稿記事 by softya(ソフト屋) » 7年前

個別に変更が必要のある可能性のあるものは引数に、グループで処理するものはSetDrawMode()などセッターで処理するのが適当思われます。
まぁ、元はといえばSetDrawMode()はDirectXのレンダリング ステート を変更するものなので、こういう形になっているんですけどね。
「レンダリング ステート (Direct3D 9)」
http://msdn.microsoft.com/ja-jp/library ... s.85).aspx
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

霜焼け

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

#4

投稿記事 by 霜焼け » 7年前

なるほどグループで処理ということを考えていませんでした。
ありがとうございます

閉鎖

“C言語何でも質問掲示板” へ戻る