どこまでprivateにすればいいのでしょうか

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
トム
記事: 4
登録日時: 13年前

どこまでprivateにすればいいのでしょうか

#1

投稿記事 by トム » 13年前

いつもお世話になっております。

今回質問したいことはクラスを作るときにメンバ変数をどこまでプライベートに
するのがいいのかということです。

基本的にはprivateにするべきなんでしょうし、私もとりあえずはそうしています。
しかしMFC標準のクラスでもCPointだとxやyといったメンバはpublicですよね。
こういった単純なものはpublicでもいいのでしょうか?
そのあたりのことがまだよくわかっていません。
どうかご教授お願いします。

ぬっち
記事: 105
登録日時: 13年前
連絡を取る:

Re: どこまでprivateにすればいいのでしょうか

#2

投稿記事 by ぬっち » 13年前

以下は私がprivateとpublicを使い分ける時に考えていることなので、はっきりとこれが正しいとは言えませんが、参考としてどうぞ。

私は、使う人が頻繁に値を変更し、内部での動作への影響が小さい場合は「public」としていて、クラス内部で主に使用し、内部の動作に大きくかかわる変数に対しては「private」としています。
例えば、数学のVectorクラスがあったときは、座標変数x,y,zといったものは何度も書き換えることを想定していて、それがクラスの内部での動作を変えることは無いため「public」にします。
それに対して、リソースを管理するようなクラスなどで、保持するデバイスや、リソース管理の設定をメンバ変数に持つとしたら、それをpublicにしてしまい変化させてしまうと内部での動作が明らかにおかしくなってしまいますよね?
そのためこの場合は「private」にします。

基本的にはprivateを使用するのが好ましいですが、私は「そのクラスの作成者が何度も書き換えることを想定している場合ではpublicにしても良いと思っいます。」

publicにすべきものをprivateにして、それらの値を取得・設定するのにはSetやGetのような関数が必要となります。それらの関数の呼び出しでのコストパフォーマンスが気になるのであれば、inline関数を使うのも手だと思います。

アバター
トム
記事: 4
登録日時: 13年前

Re: どこまでprivateにすればいいのでしょうか

#3

投稿記事 by トム » 13年前

返信が大変遅れて申し訳ございません。

なるほど。その変数の性質に応じて柔軟に変えていくのですね。
xyzのような単純なものならともかく、そういった判断をしていくには
少し経験が必要かもしれませんね。
大変参考になりました。ありがとうございました。

閉鎖

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