Der Zweck der ungarischen Notation besteht darin, Informationen in die Kennung zu kodieren, die sonst im Typensystem nicht kodiert werden können. Meiner Meinung nach ist es wichtig genug, diese Informationen im Typensystem zu codieren, wo sie ordnungsgemäß überprüft werden können. Und wenn die Informationen nicht wichtig sind, warum zum Teufel möchten Sie dann Ihren Quellcode damit vollstopfen?
Oder, um es kurz zu machen: Typinformationen gehören in das Typensystem. (Hinweis: Es muss kein statisches Typsystem sein. Solange die Typfehler abgefangen werden, ist es mir egal, wann sie abgefangen werden.)
In einigen anderen Antworten wurden Maßeinheiten als akzeptable Verwendungen der ungarischen Notation genannt. (Ich bin ein bisschen überrascht, dass noch niemand den NASA Mars Climate Orbiter erwähnt hat, da dies die ganze Zeit in Diskussionen über die ungarische Notation auftaucht).
Hier ist ein einfaches Beispiel in 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'.
Schau, Ma, keine Ungarn!
Wenn ich hier die ungarische Notation anstelle von Typen verwenden würde, würde mir das kein bisschen helfen:
let mSomeLength = 48.15
let ftSomeOtherLength = 16.2342
mSomeLength + ftSomeOtherLength
// > val it : float = 64.3842
Der Compiler ließ es direkt durch. Ich verlasse mich jetzt darauf, dass ein Mensch erkennt, was im Wesentlichen ein Tippfehler ist. Ist das nicht was ein Typ Checker ist?
Noch besser mit der Programmiersprache 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
Zusammenfassend: Ich mag die ungarische Notation nicht. Du solltest es niemals benutzen.
Davon abgesehen halte ich die Verwendung der ungarischen Notation für eine gute Idee. Warte was?
Ja! In diesem speziellen Fall haben Sie erwähnt:
Darüber hinaus muss der Großteil unseres Codes auf einigen verrückten DSPs laufen, auf denen es sowieso kein Konzept wie bool oder float gibt
Aber genau das ist der einzig sinnvolle Anwendungsfall für die ungarische Notation!
PS: Ich empfehle von ganzem Herzen, sich Frink anzuschauen. Das Handbuch enthält einige der tollsten Furz-Witze, die es je gab. Es ist auch eine ziemlich coole Sprache :-)