Digamos que temos um método como este (em C #):
int GetCustomerCount()
{
// some code
}
Agora, no código, chamamos assim:
var intStuff = GetCustomerCount();
// lots of code that culminates in adding a customer
intStuff++;
O int não nos diz muito. O simples fato de algo ser um int não nos diz o que há nele. Agora vamos supor, em vez disso, chamamos assim:
var customerCount = GetCustomerCount();
// lots of code that culminates in adding a customer
customerCount++;
Agora podemos ver qual é o objetivo da variável. Importa se sabemos que é um int?
O objetivo original do húngaro, porém, era fazer com que você fizesse algo assim:
var cCustomers = GetCustomerCount();
// lots of code that culminates in adding a customer
cCustomers++;
Tudo bem, desde que você saiba o que c significa. Mas você teria que ter uma tabela padrão de prefixos, e todos precisariam conhecê-los, e qualquer pessoa nova precisaria aprendê-los para entender seu código. Considerando que customerCount
ou countOfCustomers
é bastante óbvio à primeira vista.
O húngaro tinha algum objetivo no VB antes de Option Strict On
existir, porque no VB6 e anterior (e no VB .NET com Option Strict Off
) o VB coagiria tipos, portanto, você pode fazer isso:
Dim someText As String = "5"
customerCount = customerCount + someText
Isso é ruim, mas o compilador não diria isso. Então, se você usasse húngaro, pelo menos teria algum indicador do que estava acontecendo:
Dim strSomeText As String = "5"
intCustomerCount = intCustomerCount + strSomeText // that doesn't look right!
No .NET, com digitação estática, isso não é necessário. E o húngaro era frequentemente usado como substituto de uma boa nomeação. Esqueça o húngaro e escolha bons nomes.