SuperObject совместимый с FPC для Win/Linux

Планы, идеология, архитектура и т.п.

Модератор: Модераторы

SuperObject совместимый с FPC для Win/Linux

Сообщение Makhaon » 06.11.2018 20:58:40

Всем добрый день, возможно кому-то пригодится:
https://github.com/Makhaon/superobject
пишите вопросы, если будут.
Makhaon
новенький
 
Сообщения: 38
Зарегистрирован: 08.08.2018 15:23:24

Re: SuperObject совместимый с FPC для Win/Linux

Сообщение serbod » 08.11.2018 11:54:55

Как-то все сложно.. Я проще сделал, и лицензия простейшая (MIT). И там же сериализатор Bencode:
https://github.com/serbod/dbitems/blob/ ... torage.pas

отдельно сериализатор JSON - https://github.com/serbod/dbitems/blob/ ... torage.pas

Где-то еще валяются сериализаторы XML и ini, но после Bencode на них даже смотреть не хочется.
Аватара пользователя
serbod
постоялец
 
Сообщения: 449
Зарегистрирован: 16.09.2016 11:03:02
Откуда: Минск

Re: SuperObject совместимый с FPC для Win/Linux

Сообщение wavebvg » 08.11.2018 13:32:30

А почему сериализация производится в ассоциативный массив? Почему не в объект, который, как мне видится, куда как проще использовать и поддерживать на практике?
wavebvg
постоялец
 
Сообщения: 354
Зарегистрирован: 28.02.2008 04:57:35

Re: SuperObject совместимый с FPC для Win/Linux

Сообщение serbod » 08.11.2018 13:49:52

wavebvg писал(а):А почему сериализация производится в ассоциативный массив? Почему не в объект, который, как мне видится, куда как проще использовать и поддерживать на практике?

А в чем же разница между объектом и ассоциативным массивом, с точки зрения сериализации? =)
Аватара пользователя
serbod
постоялец
 
Сообщения: 449
Зарегистрирован: 16.09.2016 11:03:02
Откуда: Минск

Re: SuperObject совместимый с FPC для Win/Linux

Сообщение wavebvg » 09.11.2018 11:24:05

serbod писал(а):А в чем же разница между объектом и ассоциативным массивом, с точки зрения сериализации? =)


В общем случае -- у массива не может быть методов, скрытых свойств, значит и наследования и т.п. А ради сериализации использовать отдельную реализацию ассоциативного массива, несовместимую с базовыми реализациями (TStrings и т.п.) кажется чересчур расточительным занятием. Но для локальных утилит -- это вполне подойдёт.
При сериализации -- никакой внутренней логики и проверки корректности свойств (инкапсуляция), абстрактных/базовых классов (абстракция, полиморфизм), проверки корректности компилятором. При большом количестве кода без обязательного плотного покрытия тестами -- будут неожиданные сюрпризы, особенно не живом проекте (мертвый может неожиданно умереть без возможности реанимации).

И да, нескромный вопрос: зачем создавать TStringStream, чтобы прочитать/записать в строку поток байт?
wavebvg
постоялец
 
Сообщения: 354
Зарегистрирован: 28.02.2008 04:57:35

Re: SuperObject совместимый с FPC для Win/Linux

Сообщение serbod » 09.11.2018 13:02:58

wavebvg писал(а):ради сериализации использовать отдельную реализацию ассоциативного массива, несовместимую с базовыми реализациями (TStrings и т.п.) кажется чересчур расточительным занятием.

Для того, чтобы элементы данных самоуничтожались когда их никто не использует, необходимо обращаться с ними не как с классами, а как с интерфейсами. Только у переменных типа Interface есть подсчет ссылок, у переменных типа Pointer или Class подсчета ссылок нет.
К сожалению, для хранения типов Interface обычные контейнеры вроде TStrings или TList не подходят. Поэтому, для создания ассоциативного массива с поддержкой reference counting приходится извращаться. Если вы знаете способ лучше - поделитесь.

Про корректность не понял - причем тут компиляция, инкапсуляция и полиморфизм, когда есть всего один тип элемента, аналог Variant? Элемент может хранить разные типы значений, тип значения легко проверить. Даже если из элемента хранящего текст прочитать число, будет прочитано число по умолчанию (ноль).

wavebvg писал(а):И да, нескромный вопрос: зачем создавать TStringStream, чтобы прочитать/записать в строку поток байт?

Так исторически сложилось. =) Сейчас переделаю.
Аватара пользователя
serbod
постоялец
 
Сообщения: 449
Зарегистрирован: 16.09.2016 11:03:02
Откуда: Минск


Вернуться в Разработки на нашем сайте

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20

Рейтинг@Mail.ru