Visual Studioのプラグイン等、C++のgetter及びsetterを自動生成するソフトはありますでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
参考までに、スニペットを作っています。
Easy way to generate Getters and Setters in Visual Studio
投稿2016/12/18 23:19
総合スコア6851
0
ベストアンサー
こんにちは。
無いと思いますよ。
といいますか、全てのprivateメンバをpublicにアクセスできるようにするってオブジェクト指向からかけ離れた発想です。全てのメンバをpublicにアクセスしたいのであれば、構造体にして全てのメンバをpublicに定義することをお勧めします。
投稿2016/12/18 14:25
総合スコア23272
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
オブジェクト指向プログラミングでは、「メンバ変数は基本的にprivateかprotectedにしてgetter及びsetter(C#等最近の言語だとプロパティ)でアクセスするようにすべき」と聞くことが多いのですが、間違いなんでしょうか。
2016/12/18 23:01
「メンバ変数をpublicに晒すのは厳に慎むべし。
どうしてもその必要がある場合に限り、getter/setterを介してアクセスせよ。」
です。
自動生成したくなるくらいに晒したいメンバ変数が多くあること自体問題ではないかと。
2016/12/19 02:16 編集
> と聞くことが多いのですが、間違いなんでしょうか。
間違いですよ。カプセル化のメリットを理解しないまま、形式だけ守ろうとするとそのようになります。そのような勘違いをしている人も一定数いるようですので、たまたま「外れ」な記述ばかりを見かけた、もしくは、そのように受け取ってしまったのどちらかと思います。
オブジェクト指向的なクラスは、ある程度まとまった機能を提供します。その機能を実現する際に用いる内部的な変数はprivateにして外部へ公開しません。内部変数を他の誰かに勝手に修正されると無茶苦茶痛いですから。
そして、private変数全てにgetter/setterを自動実装すると言うことは、全ての内部的な変数の修正を外部に許することになります。折角privateにして、外部からの修正を禁止したのに自由に触れるようにするって意味がないと思いませんか?
一部の内部的な変数については、ナマのまま外部に公開した方がよいケースもそこそこあります。
そのような変数は内部的な変数というよりは、そのクラスが管理すると「公言」している変数です。
そのような変数はpublicにすることも考えられますが、getter/setter経由しておいた方が良い場合が多く、それに対してgetter/setter経由しないことのメリット(無駄な関数を作らない)が小さいのです。
getter/setterの最も重要な効果は、その変数の型や名前を修正する必要に迫られた時、getter/setter関数を修正して外部から見える姿を同じに保てる場合があることです。外部からの姿が変化しなければ他のクラスを修正しなくて良いので随分助かります。
この効果は常に成立するわけではないですが、成立しなかったとしてもgetter/setterを経由するデメリットは無駄な関数がちょっと増えるだけなのでこのデメリットを受け入れた方が好ましい場合がほとんどなのです。
2016/12/19 12:22
どうもありがとうございました
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。