none
重载时 C# 注释我觉得是不是繁琐了一点?应该改进一下! RRS feed

  • 问题

  •  

    我是一个喜欢写注释的人,为了实例控制者调用方便,我经常会写若干重载版本,这样子话注释写的太麻烦了。

    1)  重载方法,写大量重复的注释(虽然可以粘贴复制),我觉的这个在 VS 中应该加以改进,如:自动生成啊,或重载方法自动识别啊(生成 XML 时自动再生成没有写的部分)。

    2)  注释不支持持重构,如果方法参数重构了,注释中的参数名称还要手工改,不人性化。

    大家觉得是不是啊?

    如下面的列子注释大量重复,我觉的可以改进一下,以下是我想象:

    /// <reference>void Show(int, int, int, int)</reference>
    public void Show(int a)

    // 表示引用 void Show(int, int, int, int) 版本的注释

    大量的重载方法,带来大量的冗余注释,这样不仅麻书写烦,而且也影响代码的阅读,增加 CS 文件的体积

    /// <summary>
    ///
    一个很常规的 Show 方法,能干很多事
    /// </summary>
    ///
    <param name="a">形参一哦</param>
    public void Show(int a
    {
        this.Show(a, 0, 0, 0);
    }

    /// <summary>
    ///
    一个很常规的 Show 方法,能干很多事
    /// </summary>
    ///
    <param name="a">形参一哦</param>
    ///
    <param name="b">形参二哦</param>
    public void Show(int a, int b)
    {
        this.Show(a, b, 0, 0);
    }

    /// <summary>
    ///
    一个很常规的 Show 方法,能干很多事
    /// </summary>
    ///
    <param name="a">形参一哦</param>
    ///
    <param name="b">形参二哦</param>
    ///
    <param name="c">形参三哦</param>
    public void Show(int a, int b, int c)
    {
        this.Show(a, b, c, 0);
    }

    /// <summary>
    ///
    一个很常规的 Show 方法,能干很多事
    /// </summary>
    ///
    <param name="a">形参一哦</param>
    ///
    <param name="b">形参二哦</param>
    ///
    <param name="c">形参三哦</param>
    ///
    <param name="d">形参四哦</param>
    public void Show(int a, int b, int c, int d)
    {
        //
    功能代码
    }

    2012年3月15日 3:20

全部回复

  • /// <summary>
    ///
    一个很常规的 Show方法,能干很多事
    ///</summary>
    ///
    <param name="a">形参一哦</param>
    ///
    <param name="b">形参二哦</param>
    ///
    <param name="c">形参三哦</param>
    ///
    <param name="d">形参四哦</param>
    publicvoid Show(int a, int b=0, int c=0, int d=0)
    {
        //
    功能代码
    }

    然后就不用去重载了啊.

    2012年11月14日 7:41
  • dear

    我想应该很难办到,注解不会 compile 到组件(component)里,而是会变成另外一个带有后缀词 .config,而在开发时只会参考component,不见得会copy *.config,当然这只是我个人的想法。


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/

    2012年11月15日 2:37
  • 每一个重载方法,都肯定有自已的独特之处,要么参数不同,要么返回值不同。所以注释也不应该 完全相同。

    重载函数的注释是无法公用的。就像你写一个重载方法一样,方法名也要复制下来,而不能公用!

    2012年11月20日 4:15
  • @重载方法,写大量重复的注释(虽然可以粘贴复制),我觉的这个在VS 中应该加以改进,如:自动生成啊,或重载方法自动识别啊(生成 XML时自动再生成没有写的部分)。

    这个目前貌似没有合适的控件方法适合你。不过如果要生成类似MSDN文档的倒是可以参考:

    另外重载如果类型相同,你完全可以这样思考写(一组):

    public void Show(params int[] numbers)
            {
                // 功能代码
            }

    如果是类型变化,可以参考泛型写法:

    public void Show(int a, int b) { }
    public void Show(double a, double b) { }
    //可以简化为
    public void Show<T>(T a, T b) { }

    注意!泛型不允许对a,b进行比较以及进行+,-,*,除法等操作(如需要进行比较,必须在Show泛型方法后面加where T:IComparable)。


    我的博客园
    慈善点击,点击此处
    和谐拯救危机,全集下载,净化人心


    2012年11月22日 8:27
    版主