깔끔한 코드 팁: 메서드 인수를 너무 많이 사용하지 마세요.

3657 단어 cleancode
여러 번 우리는 함수에 너무 많은 매개변수를 추가하는 경향이 있습니다. 그러나 그것은 최선의 생각이 아닙니다. 반대로 함수에 너무 많은 인수가 필요한 경우 일관된 개체로 그룹화하면 더 간단한 코드를 작성하는 데 도움이 됩니다.

왜요? 어떻게 할 수 있습니까? 너무 많은 매개변수를 갖는 주요 문제는 무엇입니까? 다음 스니펫을 살펴보십시오.

void SendPackage(
    string name, 
    string lastname, 
    string city, 
    string country,
    string packageId
    ) { }


주소나 사람에 대한 다른 필드를 사용해야 하는 경우 새 매개 변수를 추가하고 새 함수 서명과 일치하도록 기존 메서드를 모두 업데이트해야 합니다.

State 인수를 추가하면 어떻게 될까요? 주소의 일부(상태 = "이탈리아")입니까 아니면 패키지와 관련된 항목(상태 = 손상됨)입니까?

이 필드를 올바른 개체에 저장하면 해당 의미를 이해하는 데 도움이 됩니다.

void SendPackage(Person person, string packageId) { }

class Person { 
    public string Name { get; set; }
    public string LastName { get; set; }
    public Address Address {get; set;}
}

class Address { 
    public string City { get; set; }
    public string Country { get; set; }
}


많은 매개변수를 사용하지 않는 또 다른 이유는 무엇입니까? 병합 충돌을 피하기 위해.

Alice와 Bob이라는 두 명의 개발자가 SendPackage 메서드에 영향을 미치는 몇 가지 기능에 대해 작업하고 있다고 가정합니다. Alice는 분기에서 새 매개변수bool withPriority를 추가합니다. 그러는 동안 Bob은 지점에서 bool applyDiscount를 추가합니다. 그런 다음 Alice와 Bob은 기본 분기에서 분기를 병합합니다. 결과는 무엇입니까? 물론 충돌이 있습니다. 이 메서드에는 이제 두 개의 부울 매개 변수가 있으며 최종 결과에 추가되는 순서로 인해 문제가 발생할 수 있습니다. 더욱이, SendPackage 메서드에 대한 모든 호출에는 이제 값이 컨텍스트에 따라 달라지는 하나 또는 두 개의 새 매개 변수가 있기 때문입니다. 따라서 병합 후 Alice가 추가한 값 대신 Bob이 applyDiscount 매개 변수에 대해 정의한 값을 사용할 수 있습니다.

결론



요약하자면, 매개변수의 수를 줄여야 하는 이유는 무엇입니까?
  • 해당 매개변수에 컨텍스트 및 의미 부여
  • - 위치 매개변수
  • 에 대한 오류 방지
  • 병합 충돌 방지

  • 👉 토론하거나 아래 댓글 섹션에서 논의합시다!

    🐧

    좋은 웹페이지 즐겨찾기