質問するログイン新規登録

回答編集履歴

3

補足場所修正

2015/12/02 02:06

投稿

hsk
hsk

スコア728

answer CHANGED
@@ -1,10 +1,12 @@
1
1
  こんにちは。もしかしてすでに似た趣旨のご回答をされている方もおられるかもしれませんが...
2
2
 
3
3
  C++では、クラスのメンバーにおいてアクセス修飾子を指定しない場合 private になりますので、クラスについて基本的にはメンバーを隠匿するような使用法を言語設計者は意図しているのだろうと思います。
4
+ 私の経験的にですが、vga640x480さんが仰られる内容や、デバッグのしやすさなどから、アクセッサを経由させたほうが保守性が向上しています(改修などで、あとから楽)。
5
+ たとえば、メンバー変数の型のほうを変更した場合も、公開する変数型を同じままに保つことができます。
4
6
 
5
- オブジェクトやデータをさらけ出してひとかたまりとして扱いたい場合は、既定のアクセスレベルがpublicである、構造体を私なら使用します(class から structにコードを変えます)。すぐ捨てるサンプル的なコードならともかく、面倒ですがクラスを定義すると同時(早い段階)でアクセッサも用意します。
7
+ オブジェクトやデータをさらけ出してひとかたまりとして扱いたい場合は、既定のアクセスレベルがpublicである、構造体を私なら使用します(class から structにコードを変えます)。
6
8
 
7
- ご質問にもどりますと、私なら躊躇せずメンバー変数は隠匿し、アクセッサを定義します。すべて公開したいデータ(オブジェクトや変数)の集まりなら、構造体にします。
9
+ ご質問にもどりますと、私なら躊躇せずメンバー変数は隠匿し、アクセッサを定義します。すべて公開したいデータ(オブジェクトや変数)の集まりなら、構造体にします。すぐ捨てるサンプル的なコードならともかく、面倒ですがクラスを定義すると同時(早い段階)でアクセッサも用意します。
8
10
 
9
11
  余談ですが、C++でも.NET Frameworkのマネージドアプリケーションを作れますけれども、オブジェクト間のバインド機構を使うときにプロパティ(アクセッサ)である必要がある(フィールド(メンバー変数)は使用不可)だったりするので、 .NET 開発者もclassオブジェクトに関しては同様の考えを持っているのかな...と感じます。いちいちアクセッサを書くことは面倒かもしれませんが、IDEがずいぶん進化していて助けられます。
10
12
 

2

補足

2015/12/02 02:06

投稿

hsk
hsk

スコア728

answer CHANGED
@@ -1,9 +1,11 @@
1
1
  こんにちは。もしかしてすでに似た趣旨のご回答をされている方もおられるかもしれませんが...
2
2
 
3
- C++では、クラスのメンバーにおいてアクセス修飾子を指定しない場合 private になりますので、クラスについて基本的にはメンバーを隠匿するような使用法を言語設計者は意図しているのだと思います。
3
+ C++では、クラスのメンバーにおいてアクセス修飾子を指定しない場合 private になりますので、クラスについて基本的にはメンバーを隠匿するような使用法を言語設計者は意図しているのだろうと思います。
4
4
 
5
- オブジェクトやデータをさらけ出してひとかたまりとして扱いたい場合は、既定のアクセスレベルがpublicである、構造体を私なら使用します。
5
+ オブジェクトやデータをさらけ出してひとかたまりとして扱いたい場合は、既定のアクセスレベルがpublicである、構造体を私なら使用します(class から structにコードを変えます)すぐ捨てるサンプル的なコードならともかく、面倒ですがクラスを定義すると同時(早い段階)でアクセッサも用意します。
6
6
 
7
7
  ご質問にもどりますと、私なら躊躇せずメンバー変数は隠匿し、アクセッサを定義します。すべて公開したいデータ(オブジェクトや変数)の集まりなら、構造体にします。
8
8
 
9
- 余談ですが、C++でも.NET Frameworkのマネージドアプリケーションを作れますけれども、オブジェクト間のバインド機構を使うときにプロパティ(アクセッサ)である必要がある(フィールド(メンバー変数)は使用不可)だったりするので、 .NET 開発者もclassオブジェクトに関しては同様の考えを持っているのかな...と感じます。いちいちアクセッサを書くことは面倒かもしれませんが、IDEがずいぶん進化していて助けられます。
9
+ 余談ですが、C++でも.NET Frameworkのマネージドアプリケーションを作れますけれども、オブジェクト間のバインド機構を使うときにプロパティ(アクセッサ)である必要がある(フィールド(メンバー変数)は使用不可)だったりするので、 .NET 開発者もclassオブジェクトに関しては同様の考えを持っているのかな...と感じます。いちいちアクセッサを書くことは面倒かもしれませんが、IDEがずいぶん進化していて助けられます。
10
+
11
+ 趣旨からずれていたらすみません。

1

補足

2015/12/02 01:59

投稿

hsk
hsk

スコア728

answer CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  C++では、クラスのメンバーにおいてアクセス修飾子を指定しない場合 private になりますので、クラスについて基本的にはメンバーを隠匿するような使用法を言語設計者は意図しているのだと思います。
4
4
 
5
- オブジェクトやデータをひとかたまりとして扱いたい場合は、既定のアクセスレベルがpublicである、構造体を私なら使用します。
5
+ オブジェクトやデータをさらけ出してひとかたまりとして扱いたい場合は、既定のアクセスレベルがpublicである、構造体を私なら使用します。
6
6
 
7
7
  ご質問にもどりますと、私なら躊躇せずメンバー変数は隠匿し、アクセッサを定義します。すべて公開したいデータ(オブジェクトや変数)の集まりなら、構造体にします。
8
8