답변:
잘 알려진 헝가리 표기법 과 같이 기호에 의미있는 접두사를 추가하는 관행은 IDE가 존재하지 않거나 너무 원시적 인 시대로 거슬러 올라갑니다. 오늘날 마우스 클릭만으로 선언 지점을 찾을 때 공통 접두어를 지정하여 이름의 가장 소중한 부분 인 처음 몇 글자를 망칠 수는 없습니다.
struct
/ 래핑 할 수 있습니다 union
.
의심되는 것처럼 매개 변수 이름과 멤버 또는 로컬 변수 이름 사이의 이름 충돌을 피하는 것입니다. 같은 이유로 멤버 변수에 접두사가 부여되는 경우가 있습니다 (예 :) m_result
. 개인적으로, this
이름 충돌이있는 경우 멤버 변수에 접두사를 사용하는 것을 선호합니다 . 그것은 언어에 내장되어 있으며 모든 사람들은 이미 그 의미를 알고 있습니다.
매개 변수를 생성자 또는 setter와 같은 멤버 변수에 할당하려는 경우에만 매개 변수 접두사를 사용합니다.
Paint (newColor) {
color = newColor;
}
저에게는 "this"접두사를 사용하는 것보다 다른 변수 이름을 사용하는 것이 더 맹목적으로 보입니다.
다른 상황에서는 멤버 변수와 쉽게 혼동 될 수있는 매개 변수를 사용하지 않습니다.
메소드 또는 클래스가 너무 커서 변수의 의미를 말하기가 어려운 경우 실제 솔루션은 더 작은 메소드 / 클래스로 나누는 것입니다. 접두사를 사용하면 근본적인 문제를 해결하는 반창고 솔루션입니다.
Paint (clr) { color = clr; }
). ...이 일반적으로 하지만, 많은 모호함없는 color -> clr
예외가 될 수있다, 특히있다.
각 분석법 파라미터 이름과 함께 접두사로 'p'를 사용하도록 표준을 설정하면 나머지 분석법 본문에서 분석법 파라미터를 쉽게 인식 할 수 있습니다.
분석법 파라미터를 찾는 시간이 절약됩니다. 코드를 쉽게 디버깅 할 수 있습니다.
짧게-이 연습은 코드를 읽기 어렵게 만듭니다.
긴-다른 악의적 인 관행을 지원하는 데에만 사용되는 악의적 인 관행이라고 주장합니다. 그러한 접두사를 사용하는 것이 도움이 될 수있는 몇 가지 이유를 살펴 보겠습니다.
변수 이름의 충돌 방지
public void setHeight(int newHeight) { this.height = newHeight; }
메소드는 많은 매개 변수를 취하고 많은 변수를 선언하며 매개 변수가 무엇인지 쉽게 잊을 수 있습니다.
특정 접두사를 추가하는 경우를 제외하고는 증상에 도움이 될뿐 실제 문제는 해결되지 않습니다.