Как программист на Python, венгерская нотация быстро разваливается. В Python, я не волнует , если что - то есть строка - я все равно , если она может действовать как строка (то есть , если у него есть___str___()
метод , который возвращает строку).
Например, предположим, что у нас есть целое число foo, 12
foo = 12
Венгерская нотация говорит нам, что мы должны называть это iFoo или что-то в этом роде, чтобы обозначить его целым числом, чтобы позже мы знали, что это такое. За исключением Python, это не работает или, скорее, не имеет смысла. В Python я решаю, какой тип мне нужен, когда я его использую. Мне нужна веревка? хорошо, если я сделаю что-то вроде этого:
print "The current value of foo is %s" % foo
Обратите внимание на %s
строку -. Foo не является строкой, но %
оператор вызовет foo.___str___()
и использует результат (при условии, что он существует). foo
по-прежнему является целым числом, но мы рассматриваем его как строку, если нам нужна строка. Если нам нужен поплавок, мы рассматриваем его как поплавок. В языках с динамической типизацией, таких как Python, венгерская нотация бессмысленна, потому что не имеет значения, какого типа что-то, пока вы его не используете, а если вам нужен конкретный тип, просто обязательно приведите его к этому типу (например float(foo)
), когда вы используй это.
Обратите внимание, что динамические языки, такие как PHP, не имеют этого преимущества - PHP пытается делать «правильные вещи» в фоновом режиме, основываясь на непонятном наборе правил, которые почти никто не запомнил, что часто неожиданно приводит к катастрофическим беспорядкам. В этом случае может пригодиться какой-то механизм именования, например $files_count
или $file_name
.
На мой взгляд, венгерская нотация похожа на пиявок. Может быть, в прошлом они были полезны, или, по крайней мере, они казались полезными, но сегодня это просто лишний набор текста, а не большая польза.