parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

G_Z 14.12.2006 10:48

тут обратная совместимость просто необходима - это очень кардинальное изменение, которое может привести к крайне трудноотлавливаемым ошибкам при работе со "старым" кодом, а пользы нет никакой.
Мне думается, нормально написанный код работать не перестанет, плохо написаный - перестанет рано или поздно.
Думать о том, что произойдёт с кривым кодом, активно юзающем глобальные переменные - перебор.
Вобще говоря, при нормальном проектировании, количество локальных переменных в методах большим быть не должно - с трудом верится, что код из 5-15 строчек может требовать "декларации локальных переменных по 300 символов" - тут явно повод для "рефакторинга".
Большинство методов таких деклараций не содержит, но есть достаточно сложные, разбивать которые на десятки мелких нет необходимости.
Сейчас в Парсере вполне нормальная схема работы: все переменные, которые не описаны как локальные в методах, становятся переменными класса (в том числе и класса MAIN) - это очень удбно
Это очень неудобно.
Не прописав переменную в локальные можно огрести такую ошибку, которую искать придётся часами.
Рекурсия вам пример.
если активно использовать классы и забыть про понятие "глобальная переменная" - поверьте, оно просто не нужно и даже вредно.
У меня нет глобальных переменных.
Если вы внимательно читали мои сообщения, то я в них говорил о полях класса.
Вот их глобальность относительно самого класса мне необходима и постоянно используется.
А вот идея с возможностью описания локальных переменных не только в заголовке метода, но и непосредственно в коде очень даже удачная (в варианте "$local.variable[]"), а если еще можно сделать, чтобы область действия такой переменной была ограничена не всем методом, а блоком "{ }", то будет нам полное счастье.
Сейчас я вижу лишь, что все эти идеи призваны закрыть такую досадную штуку, как глобальность всех нелокальных переменных.
Есть единственное изменение, которое действительно нужно сделать и его обратно несовместимостью можно пренебречь: методы класса, имена которых совпадают с именами операторов, должны иметь более высокий приоритет, чем операторы.
Тут согласный.
Хотя эту фичу можно тоже использовать, но это настолько вуду за гранью, что понять чего и где перекрылось, зачастую, не представляется возможным...