【问题标题】:C# commenting technique / reuse of commentsC# 评论技术/评论的重用
【发布时间】:2011-12-26 13:09:20
【问题描述】:

我通常将类中的字段声明为私有字段以及从外部访问该字段的公共属性(到目前为止没有什么壮观的微笑):

private bool doILookGood;

public bool DoILookGood
{
   get { return doILookGood; }
   set { doILookGood = value; }
}

现在我想知道是否有一种优雅而有效的方式来评论这种情况,而无需两次写相同的评论。换句话说,我想保留 IDE 在鼠标悬停时通过工具提示向我显示变量注释的功能。

到目前为止,我是这样评论的:

/// <summary>
/// This i always true.
/// </summary>
private bool doILookGood;

/// <summary>
/// This i always true.
/// </summary>
public bool DoILookGood
{
   get { return doILookGood; }
   set { doILookGood = value; }
}

我想要这样的东西:

/// <summary>
/// This i always true.
/// </summary>
private bool doILookGood;

/// <summary cref="doILookGood" />
public bool DoILookGood
{
   get { return doILookGood; }
   set { doILookGood = value; }
}

我知道使用 XML 标记来评论私有字段并不是很有意义,因为它们不会出现在生成的文档中,但我只想拥有(IDE 内部的)注释工具提示。

也许有人有线索:)

【问题讨论】:

  • 我只需将其更改为自动属性public bool DoILookGood { get; set; }
  • 您好,感谢您的快速回复 :) 这将是显而易见的解决方案,但在某些情况下,我需要区分私有字段和公共 getter/setter 属性。
  • 是的,我知道 ;-) 我会强烈投票支持评论私有领域,而只评论公共财产。
  • @Marc:顺便说一句,您还可以拥有用于自动属性的公共 getter 和私有 setter。 `public bool MyBool { 获取;私人套装; }
  • @Marc: np :) 我经常听到这个。所以也许你想看看c# language features的列表。

标签: c# .net visual-studio coding-style xml-documentation


【解决方案1】:

尽可能使用自动属性。这将避免在不需要时使用私有成员。

public bool DoILookGood { get; set; }

如果不可能(例如在实现INotifyPropertyChanged 时),这是我的处理方式(请注意,这只是示例,我肯定会使用自动属性而不是下面的代码):

    /// <summary>
    /// Private member for <see cref="MyValue"/>.
    /// </summary>
    private bool myValue;

    /// <summary>
    /// Gets or sets a value indicating whether ...
    /// </summary>
    /// <value>
    ///   <c>true</c> if ...; otherwise, <c>false</c>.
    /// </value>
    public bool MyValue
    {
        get { return this.myValue; }
        set { this.myValue = value; }
    }

编辑:我也推荐使用GhostDoc来节省时间(一个能够自动生成cmets的插件)。

【讨论】:

  • 好的,我明白了,但是使用 我没有收到显示来自公共财产的评论文本的工具提示?
  • 不,您不会,但是如果您安装了第三方插件(例如 resharper),您可以导航到该属性。无论如何,我认为不应该为相关的私人成员复制有关该财产的全部信息。属性的私有成员在这里是因为它们是必需的,但开发人员不得在属性本身的范围之外使用它们。所以开发者唯一应该知道的是相关的属性名称。
  • 好的,我会尽量减少记录私人成员的需要 :),对于那些我必须的,我会看看第三方工具(包括 GhostDoc)。我只是认为这个公共/私人场景有一个明显的“解决方法”,除了我之外每个人都知道:) ...非常感谢:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-10
  • 2011-04-15
  • 1970-01-01
  • 1970-01-01
  • 2021-09-09
  • 2011-12-18
  • 2016-03-21
相关资源
最近更新 更多