Aplicabilidade da transformação funcional (LINQ to XML)
Transformações funcionais puras são aplicáveis em uma ampla variedade de situações.
A abordagem de transformação funcional é ideal para consultar e manipular dados estruturados; portanto, ele se encaixa bem com as tecnologias LINQ. No entanto, a transformação funcional tem uma aplicabilidade muito mais ampla do que o uso com LINQ. Qualquer processo em que o foco principal seja a transformação de dados de um formulário para outro provavelmente deve ser considerado como um candidato para a transformação funcional.
Esta abordagem é aplicável a muitos problemas que, à primeira vista, podem não parecer candidatos. Usada em conjunto ou separadamente do LINQ, a transformação funcional deve ser considerada para as seguintes áreas:
- Documentos baseados em XML. Dados bem formados de qualquer dialeto XML podem ser facilmente manipulados através de transformação funcional. Para obter mais informações, consulte Transformação funcional de XML.
- Outros formatos de arquivo estruturado. De arquivos Windows.ini a documentos de texto simples, a maioria dos arquivos tem alguma estrutura que se presta à análise e transformação.
- Protocolos de streaming de dados. A codificação e a descodificação de dados de protocolos de comunicação podem muitas vezes ser representadas por uma simples transformação funcional.
- Dados RDBMS e OODBMS. Bancos de dados relacionais e orientados a objetos, assim como XML, são fontes de dados estruturados amplamente utilizadas.
- Soluções matemáticas, estatísticas e científicas. Esses campos tendem a manipular grandes conjuntos de dados para ajudar o usuário a visualizar, estimar ou realmente resolver problemas não triviais.
Como descrito em Refactor em funções puras, o uso de funções puras é um exemplo de programação funcional. Além de seus benefícios imediatos, o uso de funções puras fornece uma experiência valiosa para pensar sobre problemas a partir de uma perspetiva de transformação funcional. Essa abordagem também pode ter um grande impacto no design do programa e da classe. Isso é especialmente verdadeiro quando um problema se presta a uma solução de transformação de dados, conforme descrito acima.
Embora estejam além do escopo deste tutorial, os designs que são influenciados pela perspetiva de transformação funcional tendem a se concentrar em processos mais do que em objetos como atores, e a solução resultante tende a ser implementada como uma série de transformações em grande escala, em vez de mudanças de estado de objeto individuais.
Novamente, lembre-se de que C# e Visual Basic oferecem suporte a abordagens imperativas e funcionais, portanto, o melhor design para seu aplicativo pode incorporar elementos de ambos.