C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[9]: インテリセンスによるプロパティのコメント表示について


(過去ログ 149 を表示中)

[トピック内 11 記事 (1 - 11 表示)]  << 0 >>

■86742 / inTopicNo.1)  インテリセンスによるプロパティのコメント表示について
  
□投稿者/ ぶなっぷ (169回)-(2018/03/08(Thu) 10:01:11)

分類:[C#] 

2018/03/08(Thu) 11:37:32 編集(投稿者)
VisualStudioにてC#言語を使用する場合、
以下のように変数にコメントを記載すると、変数にマウスカーソルを当てた際、
インテリセンスによって、変数のコメントが表示されます。
    /// <summary>
    /// 価格
    /// </summary>
    public int Price;
(参考)
https://dobon.net/vb/dotnet/vs/showintellisense.html

これをMVVM対応したプロパティに採用する場合、私は以下のように書くことが
多いのですが、
    /// <summary>
    /// 価格
    /// </summary>
    private int _Price;
    public int Price
    {
        get { return _Price; }
        set
        {
            if (_Price == value) return;
            _Price = value;
            OnPropertyChanged();
        }
    }

こうしてしまうと、_Price(privateメンバ)に対して、インテリセンスは効くの
ですが、Price(publicプロパティ)にはインテリセンスが効きません。

以下のようにすれば、双方にインテリセンスが効きますが、これだと同じ
コメントを2回書かねばなりません。
    /// <summary>
    /// 価格
    /// </summary>
    private int _Price;

    /// <summary>
    /// 価格
    /// </summary>
    public int Price
    {
        get { return _Price; }
        set
        {
            if (_Price == value) return;
            _Price = value;
            OnPropertyChanged();
        }
    }

コメント記載は1回だけで、双方に対してインテリセンスを効かせるという
わがままな手法などは存在しますでしょうか?

引用返信 編集キー/
■86745 / inTopicNo.2)  Re[1]: インテリセンスによるプロパティのコメント表示について
□投稿者/ ぶなっぷ (170回)-(2018/03/09(Fri) 09:43:56)
みなさん、どうもです。

これだけの識者が集まって返事がないところを見ると、
方法はないという結論で良さそうです。

ありがとうございました。

解決済み
引用返信 編集キー/
■86746 / inTopicNo.3)  Re[2]: インテリセンスによるプロパティのコメント表示について
□投稿者/ にゃるら (5回)-(2018/03/09(Fri) 10:36:18)
No86745 (ぶなっぷ さん) に返信
> みなさん、どうもです。
>
> これだけの識者が集まって返事がないところを見ると、
> 方法はないという結論で良さそうです。
>
> ありがとうございました。

識者ではないですけど、思ったことだけせっかくなのでコメントさせてもらいます。

コメントが実装を見ないとわからない内容だと思うわけです。
実装を見ないとわからないっていうのは、プロパティかフィールドかはたまはメソッドとか。
プロパティにしてもgetterだけ、setterだけ、両方ということもコメントからはわかりません。

よって「価格」というコメントだけがそもそも不十分なのかなって。
フィールドだったら「価格の値」、プロパティだったら「価格の取得と設定」とかになるんかな?

だから「同じコメントにならない」はずっていうのが僕の考えです。

つまり提起された問題はそもそも起きない、という話です。長々コメントでした。
解決済み
引用返信 編集キー/
■86747 / inTopicNo.4)  Re[2]: インテリセンスによるプロパティのコメント表示について
□投稿者/ とっちゃん (488回)-(2018/03/09(Fri) 10:49:15)
No86745 (ぶなっぷ さん) に返信
> みなさん、どうもです。
>
> これだけの識者が集まって返事がないところを見ると、

みんながみんな、いつも暇なわけではないので、即日で反応ないからもういいやというのもどうかと。。。

解決策ではありませんが、そもそも論も書いておこうかと。。。

自分で /// なコメントをつけることは多くないのですが
つけるようなクラスの場合でも「private」なメンバーに /// なコメントはつけません。

/// なコメントはそのクラスを外部に公開した際に添付される一種の簡易ヘルプ機能です。
(本来ライブラリに含まれるクラスを外部から見た時に参照するようなもの)

private なメンバーは、そもそも外部から見るものではないので
外向けのヘルプリファレンス的なものは必要ないと思います。

解決済み
引用返信 編集キー/
■86748 / inTopicNo.5)  Re[3]: インテリセンスによるプロパティのコメント表示について
□投稿者/ ぶなっぷ (171回)-(2018/03/09(Fri) 13:11:34)
あれ、クローズしたらいろいろ意見が出てきましたね。

私的にできたらいいなと思うのは以下のようなことです。
最初の例だと、あまり迷いようがないように見えます。

しかし、例えば、小売業をやっていると仮定するなら、
価格と言ってもいろいろあるわけです。
・仕入れ価格
・販売価格
・減損価格


で、それぞれ、そのままの英語とかになっていれば良いわけですが、
ありがちなのが、
・InPrice
・CellPrice
・DecPrice
とか、ソースコード上では短い名前で定義されるケースです。

すると、「InPrice」「DecPrice」ってなんやねん?
となるわけです。
で、「InPrice」「DecPrice」にマウスカーソルを当てたら、
「仕入れ価格」「減損価格」
ってツールチップが出たら嬉しい。

まぁ、「定義へ移動」で飛んでしまえば見えるのでいいんですが、
もう一手間減らせたらという、まぁ、できたらレベルの願望ですね。

ありがとうございました。
解決済み
引用返信 編集キー/
■86749 / inTopicNo.6)  Re[4]: インテリセンスによるプロパティのコメント表示について
□投稿者/ とっちゃん (489回)-(2018/03/09(Fri) 13:26:10)
No86748 (ぶなっぷ さん) に返信
> で、それぞれ、そのままの英語とかになっていれば良いわけですが、
> ありがちなのが、
> ・InPrice
> ・CellPrice
> ・DecPrice
> とか、ソースコード上では短い名前で定義されるケースです。
>
> すると、「InPrice」「DecPrice」ってなんやねん?
> となるわけです。

そこまで短くすればそうなるでしょうね。

なので、省略しない名前を付ければいいと思います。
今はインテリセンスの性能が上がったので、Price と入れれば
前後に何かついてるのもリストアップしてくれます。




> で、「InPrice」「DecPrice」にマウスカーソルを当てたら、
> 「仕入れ価格」「減損価格」
> ってツールチップが出たら嬉しい。
>
> まぁ、「定義へ移動」で飛んでしまえば見えるのでいいんですが、
> もう一手間減らせたらという、まぁ、できたらレベルの願望ですね。
>
ポップアップで便利なのはメソッドパラメータの入力時かなぁ。。。
あれは、/// なコメントでちゃんとつけておけば出たような気がしますが。。。

解決済み
引用返信 編集キー/
■86750 / inTopicNo.7)  Re[5]: インテリセンスによるプロパティのコメント表示について
□投稿者/ ぶなっぷ (172回)-(2018/03/09(Fri) 13:42:54)
たしかに、そういう運用でなんとかするのもありですね。
というか、私も、本来、それが最良だと思います。

しかし、そう口で言っても、なかなかうまくはいかないのが現実でしょうね。
ひどい場合だと、
  bool Flag;
なんてメンバを定義して平気だったりしますからね。

まぁ、ここまでやっちゃう方だとコメントつけろっていっても、
  /// <summary>
  /// フラグ
  /// </summary>
  bool Flag;
てやられちゃったりするんですけどね。

なかなかに難しいですね(笑)

解決済み
引用返信 編集キー/
■86751 / inTopicNo.8)  Re[6]: インテリセンスによるプロパティのコメント表示について
□投稿者/ とっちゃん (490回)-(2018/03/09(Fri) 17:10:26)
運用かどうかにかかわらず、うまくいかないならうまくいくように何かしら対策をとっていくしかないと思います。
それかあきらめる(そういうものと割り切って、使っていく)か。。。



ちなみに、前にも書いていますが、/// はクラスの外部に対して見せるコメントで
コメントというよりはそのクラスメンバーの「説明文」に当たり、外向けの文章(要するにマニュアル)です。

なので、プライベートなメンバーに対しては通常つけるものじゃないと思っています。

また、一番最初に提示したような、プロパティの内部変数であれば
そもそもプロパティ以外でアクセスすること自体例外的なものなので(だめではないですが原則やらない)
説明が必要という時点で設計的にかなりダメだと思いますよ(おそらくそれもあってコメントつきにくいんじゃないかと。。。)。

解決済み
引用返信 編集キー/
■86757 / inTopicNo.9)  Re[7]: インテリセンスによるプロパティのコメント表示について
□投稿者/ Jitta (368回)-(2018/03/11(Sun) 14:58:19)
> /// <summary>
> /// 価格
> /// </summary>
> private int _Price;
> public int Price
> {
> get { return _Price; }
> set
> {
> if (_Price == value) return;
> _Price = value;
> OnPropertyChanged();
> }
> }

この書き方なら、たとえ同じクラスでも _Price にアクセスすることはせず、
アクセスメソッドを通すようにするんじゃないでしょうか。
クラス内から _Price を変更したときは、イベントを出さない?それはおかしいでしょう。
ということは、_Price のコメントは「直接アクセス禁止」とか、
「Price のバリューホルダー」とかが正しいかと。
引用返信 編集キー/
■86761 / inTopicNo.10)  Re[8]: インテリセンスによるプロパティのコメント表示について
□投稿者/ ぶなっぷ (173回)-(2018/03/12(Mon) 13:16:44)
やはり、こういう話は難しいですね。

私の最初のもくろみは、私の知らない良い機能(インテリセンスの新機能とか)
があれば知りたいな、です。それ以上でもそれ以下でもないです。
なので、丸一日たってRESがなければ、無いものだと認識です。

一応、私のこれまでの書き方は、前に述べたとおり、
    /// <summary>
    /// 価格
    /// </summary>
    private int _Price;
    public int Price
    {
        get { return _Price; }
        set
        {
            if (_Price == value) return;
            _Price = value;
            OnPropertyChanged();
        }
    }
です。

とっちゃん、Jittaさんももおっしゃっているように、内部コードからは
プロパティ「Price」としてしかアクセスしていません。

だから、私の考えに一番近い改善案は以下の書き方です。
    /// <summary>
    /// 価格
    /// </summary>
    public int Price
    {
        get { return _Price; }
        set
        {
            if (_Price == value) return;
            _Price = value;
            OnPropertyChanged();
        }
    }
    private int _Price;

これで、ソースコードで実際に使用している、プロパティ「Price」としては
ツールチップが表示されるようになります。
新たに記述するコードだけでも、この運用でいきたいところ。

みなさん、いろいろなアドバイスありがとうございました。

解決済み
引用返信 編集キー/
■86763 / inTopicNo.11)  Re[9]: インテリセンスによるプロパティのコメント表示について
□投稿者/ 魔界の仮面弁士 (1586回)-(2018/03/12(Mon) 14:22:25)
No86761 (ぶなっぷ さん) に返信
> OnPropertyChanged();
自分の場合、引数無しの OnPropertyChanged を呼ぶことは殆ど無いですね。
通知モデルにもよるのかな。


> 一応、私のこれまでの書き方は、前に述べたとおり、
> です。
> 私の考えに一番近い改善案は以下の書き方です。

自分も、この「改善案」パターンで記述していますね。
プロパティとそれに対応するフィールドは、プロパティ→フィールドの順で
ペアになるよう並べています。

private フィールドには、C# の /// や VB の ''' を基本的に付与しませんが、
private メソッドに対しては、<summary> を付与することがあります。


それでも、バッキング ストア(バッキング フィールド)に対して
ドキュメント コメントを残す必要があるような場合には、
対応が分かるように <see> を併用しています。

/// <summary>
/// <see cref="Price"/> の backing-store
/// </summary>
private int _Price;
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -