Co to jest możliwe uzasadnienie nie owijając długie listy argumentów? (StyleCop SA1115)

głosy
2

Utknąłem w bitwie między ReSharper i StyleCop i chciałbym niech ReSharper wygrać, ale chcę usłyszeć argumenty na rzecz StyleCop, zanim to zrobić.

Kiedy piszę długie listy argumentów ReSharper rozsądnie kotlety listę parametrów i restartuje je w następnym wierszu. Uważam, że o wiele bardziej czytelny.

Kiedy uruchomić StyleCop nad kodem chce mnie zostawić te linie naprawdę długo. Nie podoba mi się, że tak chcę ignorować tej reguły StyleCop (SA1115). Nie mogę myśleć o dobry powód dlaczego SC chciałby te długie linie w pierwszej kolejności - jest to po prostu przypadek „zawsze robiliśmy to w ten sposób?”

Utwórz 09/12/2008 o 15:05
źródło użytkownik
W innych językach...                            


4 odpowiedzi

głosy
5

StyleCop nie chce, aby umieścić wszystkie swoje parametry na jednym bardzo długiej linii. Jednak to również nie chce się po prostu arbitralnie wstawić znak nowej linii, aby przenieść część listy parametrów w dół do następnej linii. StyleCop chciałoby Ci wykonać jedną z następujących czynności:

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)
Odpowiedział 29/10/2010 o 17:23
źródło użytkownik

głosy
2

To chyba nie przypomnieć, że lista jej argumentów jest zbyt długi i należy skrócić.

Odpowiedział 09/12/2008 o 15:07
źródło użytkownik

głosy
1

Choć gra o kodem z tym pytanie , ja też padł wolny od SA1115 poprzez prowadzenie StyleCop z VS IDE. Po pewnym mucking, oto efekt końcowy, który StyleCop odczuwalne było 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;
    });
}

Pomyślałem, że mogę go udostępnić.

Odpowiedział 24/08/2009 o 22:44
źródło użytkownik

głosy
0

Wydaje się, że reguła technicznie mówi „parametr musi podążać przecinek”. Dość nit-wybredna jeśli chodzi o mnie, ale niektórzy ludzie wierzą w początkowej linii ciągłość przecinkami aby naprawdę pokazać, hej! Ta linia jest kontynuacją! Na przykład

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

Niezależnie od pływaki łódź, osobiście :)

Odpowiedział 09/12/2008 o 15:17
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more