Digamos que tenemos un método como este (en C #):
int GetCustomerCount()
{
// some code
}
Ahora en código lo llamamos así:
var intStuff = GetCustomerCount();
// lots of code that culminates in adding a customer
intStuff++;
El int no nos dice mucho. El mero hecho de que algo sea un int no nos dice qué contiene. Ahora supongamos, en cambio, lo llamamos así:
var customerCount = GetCustomerCount();
// lots of code that culminates in adding a customer
customerCount++;
Ahora podemos ver cuál es el propósito de la variable. ¿Importaría si supiéramos que es un int?
Sin embargo, el propósito original del húngaro era que hicieras algo como esto:
var cCustomers = GetCustomerCount();
// lots of code that culminates in adding a customer
cCustomers++;
Esto está bien siempre que sepas lo que significa c . Pero tendría que tener una tabla estándar de prefijos, y todos tendrían que conocerlos, y cualquier persona nueva tendría que aprenderlos para comprender su código. Mientras que customerCount
o countOfCustomers
es bastante obvio a primera vista.
El húngaro tenía algún propósito en VB antes de Option Strict On
existir, porque en VB6 y antes (y en VB .NET con Option Strict Off
) VB obligaría a los tipos, por lo que podría hacer esto:
Dim someText As String = "5"
customerCount = customerCount + someText
Esto es malo, pero el compilador no te lo diría. Entonces, si usaste húngaro, al menos tendrías algún indicador de lo que estaba sucediendo:
Dim strSomeText As String = "5"
intCustomerCount = intCustomerCount + strSomeText // that doesn't look right!
En .NET, con escritura estática, esto no es necesario. Y el húngaro se usaba con demasiada frecuencia como sustituto del buen nombre. Olvídate del húngaro y elige buenos nombres.