2

私は ReSharper と StyleCop の間の戦いで立ち往生しており、ReSharper に勝たせたいと思っていますが、そうする前に StyleCop を支持する議論を聞きたいです。

私が長い引数リストを書いているとき、ReSharper は賢明にパラメーターリストを切り刻み、次の行から再開します。私はそれがはるかに読みやすいと思います。

コードに対して StyleCop を実行すると、それらの行を非常に長く残す必要があります。私はそれが気に入らないので、その StyleCop ルール (SA1115) を無視したいと思います。なぜ SC が長い行列を望んでいたのか、そもそも理由が思い浮かびません。単に「私たちはいつもこのようにしてきた」からなのでしょうか?

4

4 に答える 4

6

StyleCop は、すべてのパラメーターを 1 つの非常に長い行に配置することを望んでいません。ただし、パラメーター リストの一部を次の行に移動するために勝手に改行を挿入することも望ましくありません。StyleCop は、次のいずれかを行うことを望んでいます。

public void MyMethod(int param1, int param2, int param3)

public void MyMethod(
    int param1, int param2, int param3)

public void MyMethod(
    int param1,
    int param2,
    int param3)
于 2010-10-29T16:23:21.080 に答える
2

おそらく、引数リストが長すぎるため、短くする必要があることを思い出させるためのものです。

于 2008-12-09T14:07:49.853 に答える
1

この質問のコードで遊んでいる間、VS IDE から StyleCop を実行することで SA1115 にも違反しました。いろいろいじった後、StyleCopがOKだと感じた最終結果は次のとおりです。

public static string Format<T>(string pattern, T template)
{
    Dictionary<string, string> cache = new Dictionary<string, string>();

    return RegexExpression.Replace(
        pattern, 
        match =>
    {
        string key = match.Groups[1].Value;
        string value;

        if (!cache.TryGetValue(key, out value))
        {
            var prop = typeof(T).GetProperty(key);

            if (prop == null)
            {
                throw new ArgumentException("Not found: " + key, "pattern");
            }

            value = Convert.ToString(prop.GetValue(template, null));
            cache.Add(key, value);
        }

        return value;
    });
}

シェアしようと思っただけです。

于 2009-08-24T21:44:09.167 に答える
0

技術的には、「パラメーターはコンマの後に続く必要がある」とルールが言っているようです。あなたが私に尋ねると、かなりうるさいですが、一部の人々は、実際にやあを示すためにコンマで継続行を開始すると信じています! このセリフは続きです!例えば

void Foo(  int blah
         , string blork
         , ...

個人的には、あなたのボートに浮かぶものは何でも:)

于 2008-12-09T14:17:52.733 に答える