Apex Enterprise Patterns no desenvolvimento Salesforce

Apex Enterprise Patterns

O desenvolvimento em Salesforce frequentemente enfrenta desafios como código desorganizado, dependências rígidas e dificuldades na reutilização de componentes.

Para superar essas barreiras e implementar um design robusto e escalável, os Apex Enterprise Patterns oferecem uma abordagem eficaz.

A biblioteca FFLIB, desenvolvida pela FinancialForce, é uma implementação open-source desses padrões, auxiliando na estruturação de código em camadas bem definidas e promovendo boas práticas de desenvolvimento.

O que é a FFLIB?

A FFLIB é um framework que implementa os princípios dos Apex Enterprise Patterns, proporcionando uma arquitetura modular e sustentável para aplicações Salesforce. Enfatiza a separação de responsabilidades, facilitando a manutenção e evolução do código ao longo do tempo.

Princípios Fundamentais da FFLIB

Separation of Concerns (SoC): Promove a separação clara entre

lógica de domínio, serviços e persistência de dados, permitindo que

cada componente tenha uma responsabilidade específica.

Unit of Work (UoW): Gestão eficiente das operações DML (Data

Manipulation Language), reduzindo as chamadas redundantes à base de dados e garantindo a integridade das transações.

Dependency Injection (DI): Facilita a substituição de dependências

durante os testes, promovendo a flexibilidade e aumentando a

testabilidade do código.

Principais Componentes da FFLIB

Camada de Domínio (Domain Layer): Encapsula a lógica de negócios

específica de cada objeto, centralizando regras e validações.

Camada de Serviço (Service Layer): Contém regras de negócio de alto nível que podem abranger múltiplos domínios, coordenando operações complexas e garantindo a coesão do sistema.

Camada de Seletor (Selector Layer): Centraliza as consultas à base

de dados, facilitando a manutenção e reutilização de consultas complexas.

Camada de Implementação (Implementation Layer): Define

abstrações que facilitam a concretização de testes e promove boas

práticas de programação orientada a interfaces.

Benefícios de Adotar a FFLIB

Código Modular e Reutilizável: A separação de responsabilidades

reduz o acoplamento entre classes, facilitando código mais fácil de

manter e expandir.

Facilidade nos Testes Unitários: A utilização de injeção de

dependências e mocks permite validar o comportamento do código sem depender de operações reais no banco de dados.

Melhor Governance de Dados: O padrão Unit of Work otimiza as

transações, garantindo eficiência e consistência nas operações de

banco de dados.

Adaptação Ágil a Mudanças: A estrutura modular facilita modificações e expansões, permitindo que a solução evolua conforme as necessidades do negócio.

Conclusion

A adoção da FFLIB no desenvolvimento em Salesforce eleva a qualidade do código, melhora a testabilidade e facilita a manutenção das aplicações.

Implementar os Apex Enterprise Patterns por meio desta biblioteca proporciona uma arquitetura sólida e preparada para o futuro.

Dúvidas Frequentes

A FFLIB pode ser usada em qualquer projeto Salesforce ou há limitações?

A FFLIB pode ser usada na maioria dos projetos Salesforce, mas há algumas considerações:

Complexidade do projeto: Para projetos muito pequenos ou com

poucas regras de negócio, a FFLIB pode assumir-se como um esforço injustificado, pois a sua estrutura modular exige uma curva de aprendizagem, influenciando negativamente o prazo de implementação destes projetos.

Equipa e conhecimento: Se a equipa não estiver familiarizada com Apex Enterprise Patterns, pode haver resistência inicial e um tempo maior para adaptação.

Projetos gerenciados (Managed Packages): Em pacotes gerenciados, pode ser necessário adaptar a FFLIB para respeitar restrições como namespace e isolamento de código.

Limitações técnicas: Embora a FFLIB melhore a organização do código, não resolve problemas relacionados a limites do Salesforce, como governor limits ou chamadas DML excessivas.

Quais os desafios ao adotar a FFLIB em projetos existentes?

A migração para a FFLIB num projeto já existente pode trazer alguns desafios, como:

Refatoração gradual: Migrar todo o código de uma vez pode ser

arriscado. O ideal é aplicar a FFLIB em novas funcionalidades e refatorar partes do código antigo aos poucos.

Curva de aprendizagem: Se a equipa não tiver experiência com Apex Enterprise Patterns, podem existir dificuldades iniciais para entender a estrutura do framework.

Impacto nos testes: Como a FFLIB incentiva o uso de Dependency Injection, poderá ser necessário reescrever testes para adaptar-se ao novo modelo.

Resistência da equipa: Mudanças na arquitetura do projeto podem redundar em resistências pelos desenvolvedores que estão acostumados ao código existente.

No entanto, com um bom planeamento e formação, a adoção da FFLIB pode trazer benefícios significativos a longo prazo, tornando o código mais sustentável e fácil de manter.

Recursos Adicionais

Documentação Oficial da FFLIB

Repositório GitHub da FFLIB

Curso sobre Apex Enterprise Patterns no Trailhead