- - PR -
なぜ protected field は良くない?
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-11-18 03:26
コーディング作法についての質問です。
以前C++を使っていた頃、protected fieldを非常に良く使っていました。
しかし、C#に移ってから、しばしば protected field は良くないと聞きます。FxCop先生もWarningを出してきます。そこで以下のようにすれば文句は言われないようです。
私にはこの変更のメリットが分かりません。なぜ protected field が良くないのかも謎です。どなたか良い説明をご存じないでしょうか。どうぞよろしくお願いします。 | ||||||||
|
投稿日時: 2005-11-18 03:40
public field の場合、外部クラスから直接操作される危険があります。
意図しない操作をされるかもしれないし、操作されたことも認識できないという問題があります。 protected にするということは、継承クラスであれば、どのクラスからでも操作できるように公開するということですよね。そこにはやはり、「意図しない変更」の危険を孕んでいることになります。 ですので、field への直接アクセスは禁止して、かわりにアクセス用プロパティを用意するというのは安全策として素直なやり方だと思います。 開発チーム構成や対象の形態(ライブラリなのかアプリケーションなのか)によって、その重要度は異なると思いますが・・・ さらには、オブジェクト指向の思想から考えて、 ・クラスのフィールドは、そのクラスからでないと直接アクセスできない よりも ・インスタンスのフィールドは、そのインスタンスからでないと直接アクセスできない となっているほうが自然な考え方であるとして、そのように仕様が定められている言語もあります。 | ||||||||
|
投稿日時: 2005-11-18 07:30
protected/public field でプログラムを書いてしまっても
あとからプログラムを base.setName("Derived class") に書き直さなくてもいいということは便利だな。 |
1