Допустим, у нас есть такой метод (в C #):
int GetCustomerCount()
{
// some code
}
Теперь в коде мы называем это так:
var intStuff = GetCustomerCount();
// lots of code that culminates in adding a customer
intStuff++;
ИНТ не говорит нам очень много. Тот факт, что что-то является int, не говорит нам, что в нем. Теперь давайте предположим, что вместо этого мы называем это так:
var customerCount = GetCustomerCount();
// lots of code that culminates in adding a customer
customerCount++;
Теперь мы можем видеть, какова цель переменной. Было бы важно, если бы мы знали, что это int?
Первоначальная цель венгерского языка состояла в том, чтобы вы сделали что-то вроде этого:
var cCustomers = GetCustomerCount();
// lots of code that culminates in adding a customer
cCustomers++;
Это хорошо, если вы знаете, что означает c . Но у вас должна быть стандартная таблица префиксов, и каждый должен будет их знать, и любой новый человек должен будет выучить их, чтобы понять ваш код. Тогда как customerCount
или countOfCustomers
это довольно очевидно на первый взгляд.
Венгерский имел некоторое назначение в VB до того, как Option Strict On
существовал, потому что в VB6 и более ранних версиях (и в VB .NET с Option Strict Off
) VB приводил к типам, поэтому вы можете сделать это:
Dim someText As String = "5"
customerCount = customerCount + someText
Это плохо, но компилятор вам об этом не скажет. Так что, если бы вы использовали венгерский, по крайней мере, у вас был бы какой-то индикатор того, что происходило:
Dim strSomeText As String = "5"
intCustomerCount = intCustomerCount + strSomeText // that doesn't look right!
В .NET при статической типизации это не обязательно. И венгерский язык слишком часто использовался в качестве замены для хорошего именования. Забудьте венгерский и вместо этого выберите хорошие имена.