parser

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

 

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

Ответ

Misha v.3 14.12.2006 12:33 / 14.12.2006 14:52

при работе со "старым" кодом нет необходимости использовать предлагаемый способ видимости переменных (имею в виду, что его можно будет переключать с помощью глобального ключика).

перевести "старый" код на новые рельсы будет не настолько уж сложно.

зато с новым кодом будет проще: если вы забыли объявить переменную класса, то вы не увидите её сразу же, пойдете и объявите. сейчас, в случае если забыть объявить переменную локальной, что в спешке бывает часто, то войдя в другой метод её значение запросто можно испортить. в этом случае, кстати, ошибку искать значительно сложнее (отладчика ведь нет).


про видимость методов класса MAIN ПАФ уже писал: вы забываете, что это... операторы. это что-то, чем вы расширяете функционал языка. при таком подходе все становится на свои места: операторы должны быть доступны везде без всяких префиксов MAIN, и более того, они должны работать максимально быстро (минимум проверок их существования).

кроме того, этой "проблемы" тоже почти не существует (как и ложки), если использовать класс MAIN по назначению (т.е. не сваливать в него кучу "методов") :)

тем не менее мне тоже подобный подход не нравится (устал писать префикс self при вызове любого метода своего-же класса, чтобы кто-нибудь не "поломал" его, просто объявив в MAIN одноименный оператор.

предлагаю варианты:
- "операторы" объявляются иначе, например: @@foreach[hash;...]
- сделать чтобы операторами были не методы класса MAIN, а методы какого-нить ещё класса с фиксированным именем (OPERATORS?). неудобство: их не разнести по нескольким файлам, которые удобно @USE/^use[] (например не все операторы мне нужны в этой ветке сложного if или операторы написанны разными людьми хочется использовать в проекте).
- плюс к предыдущим сделать чтобы MAIN был неявным родителем любого пользовательского класса и соотв. поиск методов (но не переменных) происходил бы как обычно: сначала ищется метод класса, потом метод родительского класса, ... в конце - неявного родителя MAIN.