Xavier Package


Xavier é uma biblioteca leve, Orientada a Objetos, para trabalhar com XML.

Unsplash image

Introdução

Hoje em dia, todas as bibliotecas XML são muito complexas. Cada classe pode ter tantos métodos que pode ser muito difícil utilizá-las e compreendê-las. Essas implementações são muito procedurais também.

Que tal se tivéssemos uma Library leve, Orientada a Objetos, que trabalha com XML e que compila em Free Pascal e Delphi?

Hoje quero apresentar a você o meu mais novo projeto.

Xavier

Eu não trabalhava no Projeto James já fazia mais ou menos um mês. Além da falta de tempo — os projetos dos clientes são prioridade, certo? — temos tínhamos uma issue que não nos deixava prosseguir.

Estávamos tentando compatibilizar o código com o Delphi, porém a parte que trata de XML é um tanto complicado.

O maior problema é que o Free Pascal não tem a mesma implementação do Delphi para leitura e escrita de streams e arquivos XML.

No Free Pascal a implementação é baseada apenas em Classes, enquanto no Delphi a implementação é baseada em Interfaces — ponto para o Delphi.

Os desenvolvedores do Free Pascal sempre tentam compatibilizar suas implementações com o Delphi porém, ao que parece, a implementação de XML no Free Pascal foi feita antes da implementação do Delphi e eles escolheram fazer tudo apenas com Classes.

A maioria das libs que são compativeis entre ambos os compiladores utilizam-se de diretivas de compilação para que seus códigos funcionem. Essa técnica, apesar de muito útil, pode transformar seu código em “espaguete” rapidamente.

Veja esse exemplo de como salvar um TXMLDocument em stream, no compilador Free Pascal e Delphi, utilizando diretivas:

E que tal isso?

Meio bizarro, improdutivo e confuso, não?

Quero escrever código mais elegante, limpo e sustentável usando a Orientação a Objetos e, infelizmente, as opções Open Source atuais não foram suficientes, considerando meus critérios pessoais.

Então, criei o Xavier.

O principal objetivo do Xavier é substituir o código procedural comum em nossos projetos, que podem ter tantas condicionais e variáveis, num código mais declarativo e Orientado a Objetos, para trabalhar mais facilmente com o XML, sem diretivas de compilação no código final.

Conclusão

A implementação do Xavier ainda está no início mas todo o código disponível hoje está funcionando, com cobertura de testes automatizados.

Eu escrevi o código em apenas algumas horas. Ainda há muito o que fazer.

Estou fazendo minha parte…

E você, que tal fazer um fork do projeto e colaborar?

Link do projeto https://github.com/mdbs99/xavier.

Até logo.

Posts Relacionados

  • Memória Segura Utilizando Instâncias de Interfaces

  • Classes Mutáveis vs Objetos Imutáveis

  • Implementando Interfaces Utilizando Diferente Assinaturas de Métodos

  • Usando Paths ao invés de Diretivas de Compilação

  • Trabalhando com Exceções em Requisições HTTP

  • Tipo object Continua Vivo

  • Array de Objetos

  • Variáveis Locais Deveriam ter Nomes Curtos

  • Como Dividir e Organizar o Código em Formulários com Muitos Widgets

  • Pascal Deveria ser Modernizado?