Предложения и замечания
Здравствуйте уважаемые.
По ходу работы с FS у меня появились некоторые пожелания, которыми и хочу поделиться:
1. В методы AddClass и AddObject класса TfsScript добавить параметры ClassName,
что позволит регистрировать различные классы, унаследованные от одного класса Delphi. Мне, например, это необходимо что-бы создавать иерархию классов по их описанию в БД.
2. Методы AddClass, AddType, AddConst в начале содержат следующую строку:
Методы AddEnum, AddEnumSet, AddMethod и вложенные вызовы в AddEnum и AddEnumSet (добавление элементов перечисления) такие проверки не выполняют вовсе, как результат: можно добавить уже существующие идентификаторы, которые никогда не будут доступны.
Тоже касается метода Add который вообще позволяет добавить все что угодно т.к. - Add(Item: TObject). Хотя предполагается, что это TfsCustomVariable.
Мне кажется более правильный вариант - вынести хранение временных переменных, создаваемых парсером, в отдельный список, а в метод Add ввести проверку на уникальность идентификатора.
3. Возможно есть смысл методы GetMembers и GetMemberCount класса TfsClassVariable сделать виртуальными.
Спасибо за внимание.
По ходу работы с FS у меня появились некоторые пожелания, которыми и хочу поделиться:
1. В методы AddClass и AddObject класса TfsScript добавить параметры ClassName,
что позволит регистрировать различные классы, унаследованные от одного класса Delphi. Мне, например, это необходимо что-бы создавать иерархию классов по их описанию в БД.
2. Методы AddClass, AddType, AddConst в начале содержат следующую строку:
if Find(Name) <> nil then Exit;
Мне кажется, что лучше было бы в этом случае возвращать ошибку типа - "Identifier redeclared", и в любом случае вызов Find заменить на FindLocal, что позволит перекрывать объявления сделанные в Parent.Методы AddEnum, AddEnumSet, AddMethod и вложенные вызовы в AddEnum и AddEnumSet (добавление элементов перечисления) такие проверки не выполняют вовсе, как результат: можно добавить уже существующие идентификаторы, которые никогда не будут доступны.
Тоже касается метода Add который вообще позволяет добавить все что угодно т.к. - Add(Item: TObject). Хотя предполагается, что это TfsCustomVariable.
Мне кажется более правильный вариант - вынести хранение временных переменных, создаваемых парсером, в отдельный список, а в метод Add ввести проверку на уникальность идентификатора.
3. Возможно есть смысл методы GetMembers и GetMemberCount класса TfsClassVariable сделать виртуальными.
Спасибо за внимание.
Комментарии
1) смысл непонятен
2) можно, конечно, и эксепшн, но особого смысла опять же нету. Насчет FindLocal - классы и типы ищутся только в глобальном fsGlobalUnit, поэтому "не катит".
3) можно, но опять же, зачем...