2

嘿,我是 C# 的新手,我写了这段代码:

static void Main()
{
    Dictionary<int, HashSet<string>> dict1 = new Dictionary<int, HashSet<string>>();
    Dictionary<int, HashSet<string>> dict2 = new Dictionary<int, HashSet<string>>();
    // ...
    CompareDicts(dict1, dict2);
}

private static void CompareDicts(Dictionary<int, HashSet<string>> dict1, Dictionary<int, HashSet<string>> dict2)
{
    // Blah blah
}

有什么方法可以使这段代码更具可读性(更短)?

4

2 回答 2

14

使用类型别名var

using AliasName = System.Collections.Generic.Dictionary<int, System.Collections.Generic.HashSet<string>>;

namespace Progam1
{
    class Program
    {
        static void Main()
        {
            var dict1 = new AliasName();
            var dict2 = new AliasName();

            CompareDicts(dict1, dict2);
        }

        private static void CompareDicts(AliasName dict1, AliasName dict2)
        {
            // Blah blah
        }

    }
}

var只有在清楚它包含什么样的数据时才使用:

例如,很好:

var abc = new List<int>();

这不好:

var abc = SomeFunc();

...因为您不会立即(在阅读代码时)知道SomeFunc返回的数据类型。您必须将鼠标移到上方var才能看到类型(在 Visual Studio 中)。

于 2013-11-01T23:21:49.727 回答
0

有时,当您处理具有大量参数和/或具有长类型名称的参数的方法时,将它们格式化为更多、更短的行会很有帮助:

private static void CompareDicts(
    Dictionary<int, HashSet<string>> dict1,
    Dictionary<int, HashSet<string>> dict2
)
{
    // Blah blah
}

这对解决类型名称的长度没有任何作用,从技术上讲,您的代码现在并没有变短,但我认为可读性大大提高。对于这种特殊方法,我可能会在水平和垂直屏幕空间之间取得平衡,如下所示:

private static void CompareDicts(
    Dictionary<int, HashSet<string>> dict1, Dictionary<int, HashSet<string>> dict2
)
{
    // Blah blah
}
于 2013-11-02T02:10:45.273 回答