긴 인수 목록을 포장하지 않는 것에 대한 정당화는 무엇입니까? (Stylecop SA1115)

StackOverflow https://stackoverflow.com/questions/352821

  •  20-08-2019
  •  | 
  •  

문제

나는 Resharper와 Stylecop 사이의 전투에 갇혀 있었고, Resharper가 이기게하고 싶지만, 그렇게하기 전에 Stylecop에 유리한 논쟁을 듣고 싶습니다.

긴 인수 목록을 작성할 때 Resharper는 매개 변수 목록을 현명하게 절단하고 다음 줄에서 다시 시작합니다. 나는 훨씬 더 읽기 쉬운 것을 알았습니다.

코드를 통해 StyleCop을 실행하면 그 라인을 정말로 길게 남겨두기를 원합니다. 나는 그것을 좋아하지 않으므로, 그 스타일 콥 규칙 (SA1115)을 무시하고 싶습니다. SC가 처음에 긴 줄을 원할 이유를 생각할 수는 없습니다. 단지 "우리는 항상 이런 식으로 해왔습니다"의 경우입니까?

도움이 되었습니까?

해결책

논증 목록이 너무 길고 단축되어야한다는 것을 상기시키는 것은 아마도 거기에있을 것입니다.

다른 팁

Stylecop은 모든 매개 변수를 하나의 긴 줄에 넣기를 원하지 않습니다. 그러나 파라미터 목록의 일부를 다음 줄로 이동하기 위해 최신 신자를 임의로 삽입하기를 원하지 않습니다. 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)

이것의 코드를 사용하는 동안 의문, 나는 또한 VS IDE에서 스타일을 실행하여 SA1115의 파울을 떨어 뜨 렸습니다. 약간의 멍청이 후에, Stylecop이 느꼈던 최종 결과는 괜찮 았습니다.

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;
    });
}

그냥 내가 공유 할 것이라고 생각했습니다.

규칙은 기술적으로 "매개 변수는 쉼표를 따라야한다"고 말합니다. 당신이 나에게 묻는다면 꽤 nit-picky이지만, 어떤 사람들은 실제로 보여주기 위해 쉼표로 연속 선을 시작한다고 믿습니다. 야! 이 라인은 계속됩니다! 예를 들어

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

보트를 떠 다니는 것이 무엇이든, 개인적으로 :)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top