Nehmen wir an, wir haben eine Methode wie die folgende (in C #):
int GetCustomerCount()
{
// some code
}
Nun nennen wir es im Code so:
var intStuff = GetCustomerCount();
// lots of code that culminates in adding a customer
intStuff++;
Das Int sagt uns nicht viel. Die bloße Tatsache, dass etwas ein Int ist, sagt uns nicht, was darin enthalten ist. Nehmen wir stattdessen an, wir nennen es so:
var customerCount = GetCustomerCount();
// lots of code that culminates in adding a customer
customerCount++;
Jetzt können wir sehen, was der Zweck der Variablen ist. Würde es etwas ausmachen, wenn wir wissen, dass es ein Int ist?
Der ursprüngliche Zweck von Ungarisch war jedoch, dass Sie so etwas tun:
var cCustomers = GetCustomerCount();
// lots of code that culminates in adding a customer
cCustomers++;
Dies ist in Ordnung, solange Sie wissen, wofür c steht. Aber Sie müssten eine Standardtabelle mit Präfixen haben, und jeder müsste sie kennen, und alle neuen Leute müssten sie lernen, um Ihren Code zu verstehen. Während customerCount
oder countOfCustomers
ist auf den ersten Blick ziemlich offensichtlich.
Ungarisch hatte in VB zuvor einen bestimmten Zweck Option Strict On
, da in VB6 und früheren Versionen (und in VB .NET mit Option Strict Off
) VB Typen erzwingen würde. Sie können dies also tun:
Dim someText As String = "5"
customerCount = customerCount + someText
Das ist schlecht, aber der Compiler würde es Ihnen nicht sagen. Wenn Sie also Ungarisch verwenden, haben Sie zumindest einen Hinweis darauf, was passiert ist:
Dim strSomeText As String = "5"
intCustomerCount = intCustomerCount + strSomeText // that doesn't look right!
In .NET ist dies bei statischer Typisierung nicht erforderlich. Und Ungarisch wurde zu oft als Ersatz für eine gute Benennung verwendet. Vergessen Sie Ungarisch und wählen Sie stattdessen gute Namen.