헝가리 표기법의 목적은 정보를 유형 시스템에서 인코딩 할 수없는 식별자로 인코딩하는 것입니다. 내 의견은이 정보가 인코딩되기에 충분히 중요하다면 올바르게 확인할 수있는 유형 시스템에서 인코딩하기에 충분히 중요하다는 것입니다. 그리고 정보가 중요하지 않다면 왜 소스 코드를 혼란스럽게 만들고 싶습니까?
또는 더 간결하게 말하면 유형 정보는 유형 시스템에 속합니다. (참고 : 정적 유형 시스템 일 필요는 없습니다. 유형 오류를 잡는 한 언제 오류를 잡든 상관하지 않습니다 .)
다른 두 답변은 측정 단위를 헝가리 표기법의 용법으로 언급했습니다. (헝가리 표기법에 대한 토론에서 항상 NASA Mars Climate Orbiter를 언급 한 사람이 없기 때문에 놀랍습니다.)
다음은 F #의 간단한 예입니다.
[<Measure>] type m
[<Measure>] type ft
let someLength = 48.15<m>
let someOtherLength = 16.2342<ft>
someLength + someOtherLength
// someLength + someOtherLength
// -------------^^^^^^^^^^^^^^^
// error FS0001: The unit of measure 'ft' does not match the unit of measure 'm'.
봐, 엄마, 헝가리 인은 없어!
내가하면 있었다 대신 여기 종류의 헝가리어 표기법을 사용하는 것을 나에게 조금이라도 도움이되지 것입니다 :
let mSomeLength = 48.15
let ftSomeOtherLength = 16.2342
mSomeLength + ftSomeOtherLength
// > val it : float = 64.3842
컴파일러는 바로 그것을 통해 보냈습니다. 나는 본질적으로 유형 오류가 무엇인지 발견하기 위해 인간 에 의존하고 있습니다. 타입 체커가 아닌가?
Frink 프로그래밍 언어를 사용하는 것이 더 좋습니다 .
someLength = 48.15m
someOtherLength = 16.2342ft
someLength + someOtherLength
// 53.09818416 m (length)
// Wanna know the answer in a good old fashioned American unit?
someLength + someOtherLength -> yd
// 58.06888031496062992
// Are you an astrophysicist?
someLength + someOtherLength -> parsec
// 1.7207949554318336148e-15
// ... or a fundmentalist Christian who refuses to use units invented
// less than 2000 years ago?
someLength + someOtherLength -> biblicalcubits
// 95.893563822870765006
그래서 요약하면, 나는 헝가리 표기법을 좋아하지 않습니다. 절대 사용해서는 안됩니다.
헝가리어 표기법을 사용하는 것이 좋습니다. 무엇을 기다립니다?
예! 이 특별한 경우에 , 당신은 언급했다 :
또한 대부분의 코드는 bool 또는 float와 같은 개념이 존재하지 않는 이상한 DSP에서 실행되어야합니다.
그러나 즉 정확하게 유일한 합리적인 사용 사례 에 대한 헝가리어 표기법!
추신 : 나는 진심으로 Frink를 보는 것이 좋습니다. 이 매뉴얼에는 가장 멋진 방귀 농담이 포함되어 있습니다. 또한 꽤 멋진 언어입니다 :-)