클래스의 속성과 일치하는 매개 변수 이름과 관련하여 이와 비슷한 질문이 있지만 C #의 케이싱을 제외하고 매개 변수 유형 이름과 동일한 매개 변수 이름을 사용하는 것과 관련하여 아무것도 찾을 수 없습니다. 내가 찾을 수있는 위반 인 것 같지는 않지만 나쁜 습관으로 간주됩니까? 예를 들어 다음과 같은 방법이 있습니다.
public Range PadRange(Range range) {}
이 메서드는 범위를 취하고 일부 패딩이 적용된 새 범위를 반환합니다. 따라서 일반적인 컨텍스트를 고려할 때 매개 변수에 대해 더 설명적인 이름을 생각할 수 없습니다. 그러나 "심리적 거리"에 대한 Code Complete를 읽을 때 선택한 팁을 생각 나게합니다. 그것은 말한다
심리적 거리는 두 항목을 쉽게 구별 할 수있는 것으로 정의 할 수 있습니다 ... 디버그 할 때 비슷한 변수 이름과 비슷한 루틴 이름 사이의 심리적 거리가 충분하지 않아 발생하는 문제에 대비하십시오. 코드를 작성할 때 문제를 피할 수 있도록 큰 차이가있는 이름을 선택하십시오.
내 메소드 서명에는 많은 "범위"가 진행 되므로이 심리적 거리와 관련하여 문제가 될 수 있습니다. 이제 많은 개발자가 다음을 수행하는 것을 봅니다.
public Range PadRange(Range myRange) {}
나는 개인적으로이 협약에 대한 강한 열망을 가지고 있습니다. 변수 이름에 "my"접두사를 추가하면 추가 컨텍스트가 제공되지 않습니다.
나는 또한 다음을 본다
public Range PadRange(Range rangeToPad) {}
나는 "my"접두사보다 이것을 좋아하지만 여전히 전체적으로 신경 쓰지 않습니다. 그것은 나에게 너무 장황하다고 느끼고 변수 이름으로 어색하게 읽습니다. 나에게, 메서드 이름으로 인해 범위가 채워질 것입니다.
이 모든 것이 준비되어 있으면, 내 직감은 첫 번째 서명과 함께하는 것입니다. 나에게는 깨끗하다. 필요하지 않을 때 컨텍스트를 강제 할 필요가 없습니다. 그러나 나 자신이나 미래 개발자 에게이 협약으로 장애를 겪고 있습니까? 모범 사례를 위반하고 있습니까?
Range r
(적어도 짧은 메소드 본문의 경우) 및 Range toPad
.
Range range
괜찮습니다.