Як програміст 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
, може бути корисним.
На мою думку, угорська нотація - це як п'явки. Можливо, раніше вони були корисними або, принаймні, здавалися корисними, але в наш час це просто багато зайвого набору тексту для не дуже великої користі.