2012-01-12 1 views
2

로컬 변수와 구별하기 위해 예를 들어 변수 이름 지정에 접두사 밑줄을 사용했습니다. 변수 이름 지정을위한 _iVar 대 iVar_

은 내가 "구글 오브젝티브 C 스타일 가이드"을보고 무슨 일이 생긴하고, 후행 밑줄 (IT HERE를 참조)를 사용하는 제안 발견,하지만 이유에 대한 상세한 설명없이.

코딩 스타일 문제인지는 알지만, 밑줄을 사용하면 어떤 장점이 있습니까?

+0

오 ...별로 적합하지 않습니까? 의견을 남겨주세요. : ( – Kjuly

+0

"정답"이있는 것보다 주관적인 토론 질문이 더 많음 – jrturton

+0

감사합니다. @jrturton,하지만 저는 'iVar_'에 대한 몇 가지 이유를 설명하기 위해 좋은 대답이 필요합니다. 그래서 이것을 동료에게 보여주고 토론 할 수 있습니다. 그와 함께 : p – Kjuly

답변

3

관련 : Question about @synthesize
는 장점이있다 (답 하단의 blockquotes 참조) : (심지어 애플 템플릿) _var 개인에 대한 (C99, 코코아 지침) 관례이지만, 너무 일반적입니다을 그 애플 이중 밑줄 __var을 사용합니다. Google은 대신 밑줄을 사용하여 문제를 해결합니다.

내가 몇 가지 더 이유와 다른 대답을 업데이트

...

밑줄도 C에서 권장하지 않습니다

는 ++ (참조 What are the rules about using an underscore in a C++ identifier?)와 코어 데이터의 특성 은 (선두를 추가하려고 모델에 밑줄 " 이름은 문자로 시작해야합니다.").

밑줄이주의할만한 선택이지만, 이 다른 경우 충돌이 발생하지 않을 가능성이 높습니다. 그렇다면 컴파일러에게 경고 메시지가 표시됩니다.

+0

! 그것이 내가 생각하는 요점이다! – Kjuly

+0

_Apple은 ivars에 하나의 밑줄을 사용하므로 변수 이름이 우리와 충돌하지 않습니다. 당신이 ivars에 이름을 붙이면 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@? – Kjuly

+1

그들은 말하지 않았지만 그것을 생각하는 데는 여러 가지 이유가 있습니다. – Jano

3

접두사 밑줄은 일반적으로 시스템/SDK 라이브러리에서 사용됩니다. 따라서 접두사 밑줄을 사용하면 수퍼 클래스에서 변수가 무시 될 수 있으며 이와 같은 버그는 쉽게 발견되지 않습니다. NSView와 같은 시스템에서 제공하는 클래스를 살펴보면 알게 될 것입니다.

+0

그래, 나는 들었지만 XCode4가 인스턴스 변수 앞에 밑줄을 포함하도록 응용 프로그램 템플릿을 업데이트한다는 것을 알게되었습니다. – Kjuly

0

트레일 링 언더 바를 사용하면 이점이 없습니다. 코드 가독성을 높일 수 있도록 코딩 스타일을 따릅니다. 이 경우 Underscore는 iVars와 지역 변수를 구별하는 데 도움이됩니다. 내가 아는 한, _iVariVar_

+0

엄마 .. 나는 그것과 함께 코딩 스타일을 따르고 싶지만, 동료는'_iVar'를 선호합니다. 나는 그를 설득 할 좋은 이유가 필요하다. : p – Kjuly

+0

왜 그를 iVar_를 사용하도록 설득하고 싶습니까? _iVar –

+1

동의에 아무런 문제가 없습니다. 나도 이점이 없다. – ZhangChn

0

거의 모든 프로그래밍 언어는 우리가 왼쪽에서 오른쪽으로 쓰고 읽는 곳을 기반으로합니다.
선행 밑줄을 사용하면 iVars를 쉽게 찾고 변수가 iVar임을 인식 할 수 있습니다.

+0

그래,'_iVar'는 ivars를 찾는 것이 더 편리합니다. 그러나 볼 수 있듯이 _Google Objective-C 스타일 가이드 _는 'iVar_'을 제안합니다 .. – Kjuly

+0

Google 문서에는 왜 밑줄을 사용하는 것이 좋은지 설명되어 있지 않습니다.
또한, 지역 변수의 이름을 지정하는 데있어서 헝가리 표기법을 포기할 것을 제안하는 것에 동의하지 않습니다. –

1

Apple은 ivars에 하나의 밑줄을 사용하므로 변수 이름이 우리와 충돌하지 않습니다. 당신이 ivars의 이름을 지정할 때 이외의 문자는을 하나만 사용하십시오.

+0

Google은 이러한 충돌을 해결하기 위해 단일 밑줄 대신 밑줄을 사용합니다. – Kjuly