Jako programista Pythona, notacja węgierska rozpada się dość szybko. W Pythonie nie obchodzi mnie, czy coś jest ciągiem - obchodzi mnie, czy może zachowywać się jak ciąg (tj. Czy ma___str___()
metodę, która zwraca ciąg).
Na przykład, powiedzmy, że mamy foo jako liczbę całkowitą, 12
foo = 12
Notacja węgierska mówi nam, że powinniśmy wywołać to iFoo lub coś w tym stylu, aby oznaczyć to liczbę całkowitą, abyśmy później wiedzieli, co to jest. Z wyjątkiem Pythona, to nie działa, a raczej nie ma sensu. W Pythonie decyduję, jakiego typu chcę, kiedy go używam. Czy chcę ciąg? cóż, jeśli zrobię coś takiego:
print "The current value of foo is %s" % foo
Zwróć uwagę na %s
- ciąg. Foo nie jest łańcuchem, ale %
operator wywoła foo.___str___()
i użyje wyniku (zakładając, że istnieje). foo
jest nadal liczbą całkowitą, ale jeśli chcemy, traktujemy ją jako łańcuch. Jeśli chcemy pływaka, traktujemy go jako pływaka. W językach dynamicznie typowanych, takich jak Python, notacja węgierska nie ma sensu, ponieważ nie ma znaczenia, jakiego typu jest coś, dopóki go nie użyjesz, a jeśli potrzebujesz określonego typu, po prostu upewnij się, że rzutujesz go na ten typ (np.float(foo)
), Użyj tego.
Zwróć uwagę, że języki dynamiczne, takie jak PHP, nie mają tej korzyści - PHP próbuje zrobić „właściwą rzecz” w tle w oparciu o niejasny zestaw reguł, których prawie nikt nie zapamiętał, co często prowadzi do nieoczekiwanych katastrof. W takim przypadku przydatny może być jakiś mechanizm nazewnictwa, taki jak $files_count
lub $file_name
.
Moim zdaniem notacja węgierska jest jak pijawki. Może w przeszłości były przydatne, a przynajmniej wydawały się przydatne, ale obecnie jest to po prostu dużo dodatkowego wpisywania, które nie przynosi wielu korzyści.