깔끔한 코드 팁: 메서드 인수를 너무 많이 사용하지 마세요.
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
매개 변수에 대해 정의한 값을 사용할 수 있습니다.결론
요약하자면, 매개변수의 수를 줄여야 하는 이유는 무엇입니까?
👉 토론하거나 아래 댓글 섹션에서 논의합시다!
🐧
Reference
이 문제에 관하여(깔끔한 코드 팁: 메서드 인수를 너무 많이 사용하지 마세요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bellonedavide/clean-code-tip-dont-use-too-many-method-arguments-41b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)