Quer Melhorar Seu Design? Aplique CQS

Nesse mundo cada vez mais acelerado da tecnologia da informação, uma das metas constantes para desenvolvedores é a otimização e a clareza do código-fonte. Como especialista em padrões de design, posso afirmar que uma das ferramentas mais eficazes para atingir esse objetivo é o Command Query Separation (CQS), uma proposta de Bertrand Meyer que resiste bravamente ao teste do tempo.

A Essência do CQS e a Linha Tênue com o SOLID

Imagine por um momento seu código como um jardim bem cuidado. Assim como as plantas requerem espaços dedicados para florescerem, assim também o seu código se beneficia de clareza e organização. O CQS estabelece essa organização ao defender que métodos devem ser claramente divididos em comandos, que alteram o estado do sistema, e consultas, que retornam dados sem alterações de estado. Mas como isso se relaciona com os princípios SOLID?

Os princípios SOLID são essenciais para o desenvolvimento de software orientado a objeto e, em particular, o Princípio da Responsabilidade Única (SRP) se alinha perfeitamente com o CQS. Ao adotar o CQS, você está implicitamente seguindo o SRP, pois cada método tem uma única responsabilidade — ou altera o estado ou responde a uma consulta.

Aprofundamento Técnico e Exemplos Práticos

Entendido o conceito, como podemos levar o CQS para além do básico e aplicá-lo em situações mais complexas? Consideremos o seguinte exemplo em C# em um cenário de e-commerce:

public class ShoppingCartService
{
    // Comando
    public void AddItem(Product item)
    {
        if (item == null)
        {
            throw new ArgumentNullException(nameof(item), "Item cannot be null.");
        }

        _shoppingCart.Add(item);
        UpdateInventory(item, decrementedBy: 1);
    }

    // Comando
    private void UpdateInventory(Product item, int decrementedBy)
    {
        // Lógica para atualizar o inventário
    }

    // Consulta
    public IReadOnlyCollection<Product> GetCartItems()
    {
        return _shoppingCart.AsReadOnly();
    }

    private List<Product> _shoppingCart = new List<Product>();
}

Aqui, AddItem claramente se define como um comando e GetCartItems como uma consulta. O método UpdateInventory é privado e serve como um auxiliar para o comando AddItem, mantendo assim a clareza de propósitos e responsabilidades. Dessa forma, o sistema de carrinho de compras torna-se mais confiável e intuitivo para quem for mantê-lo ou testá-lo.

Conclusão

Melhorar o design de software é um processo contínuo de aperfeiçoamento e adaptação. O CQS, com sua simplicidade enganosamente profunda, oferece uma rota segura para o código mais organizado e sustentável. Quando associamos CQS com os princípios SOLID, especialmente o SRP, criamos não apenas código mais limpo, mas também uma arquitetura mais resiliente.

A prática de tais princípios e como eles podem ser integrados em desafios de design mais complexos fazem parte do meu dia-a-dia e do conteúdo que compartilho em meus grupos de estudo e sessões de mentoria. Ali, nós nos aprofundamos em como o CQS pode ser o alicerce para padrões arquiteturais ainda mais abrangentes como o CQRS, explorando assim um universo de possibilidades na arte da engenharia de software.

Que outros padrões você pode aprender a partir da aplicação do CQS? Como esses princípios podem elevar a qualidade do seu próximo projeto? Essas reflexões são essenciais para o crescimento como profissional de tecnologia.

TL;DR

  1. O CQS é um conceito de Bertrand Meyer que melhora a clareza do design, distinguindo métodos em comandos e consultas.
  2. Ao separar comandos e consultas, aplicamos também o Princípio da Responsabilidade Única do SOLID, aumentando a manutenabilidade do código.
  3. Exemplos práticos, como o cenário de e-commerce em C#, ilustram a aplicação de CQS em situações complexas e seu impacto positivo no design do software.

Quer se aprofundar neste tema?

Então participe do grupo de estudos de Padrões de Projeto.

Desenvolva soluções simples para os problemas mais complexos. Escreva código fácil de entender, mais barato para manter e evoluir.

Participe do
grupo intensivo de

Padrões de Projeto

com

Desenvolva soluções simples para os problemas mais complexos. Escreva código fácil de entender, mais barato para manter e evoluir.

Participe do
grupo intensivo de

Padrões de Projeto

com

Desenvolva soluções simples para os problemas mais complexos. Escreva código fácil de entender, mais barato para manter e evoluir.

Veja outros artigos relacionados

Você Precisa Conhecer o State Pattern

Em minha jornada como desenvolvedor de software, a descoberta e compreensão do State Pattern foi um divisor de águas, assim...

Como padrões ajudam a reduzir o impacto da escassez de recursos

Quando pensamos em software development, um dos grandes desafios é criar sistemas eficientes especialmente em ambientes com recursos limitados. Diante...

Circuit Breaker – O Jeito Certo de Ajudar Sistemas Remotos a Recuperar Disponibilidade

Explorar a arquitetura de sistemas distribuídos é fascinante e desafiador. Um dos maiores desafios é a resiliência diante de falhas....

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de DDD do Jeito Certo:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de Reputação e Marketing Pessoal:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de Reputação e Marketing Pessoal:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de Padrões de Projeto:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de Padrões de Projeto:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de Algoritmos e Estruturas de Dados:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de Algoritmos e Estruturas de Dados:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Programa ElemarJR de Aceleração, Do Jeito Certo:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Programa ElemarJR de Aceleração, Do Jeito Certo:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de Reputação e Marketing Pessoal:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de Reputação e Marketing Pessoal:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de Padrões de Projeto:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de Padrões de Projeto:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de DDD do Jeito Certo:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de DDD do Jeito Certo:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de Algoritmos e Estruturas de Dados:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de Algoritmos e Estruturas de Dados:

Mentoria em Arquitetura de Software

Ênfase em Systems Design

Para se candidatar nesta turma aberta, preencha o formulário a seguir:

Reproduzir vídeo

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no curso de Quer Melhorar Seu Design? Aplique CQS:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no curso de Quer Melhorar Seu Design? Aplique CQS:

Quer Melhorar Seu Design? Aplique CQS

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de Reputação e Marketing Pessoal:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no curso de Quer Melhorar Seu Design? Aplique CQS:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de DDD do Jeito Certo:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de Padrões de Projeto:

Crie sua conta

Preencha os dados a seguir para iniciar o seu cadastro no Grupo Intensivo de Estudos de Algoritmos e Estruturas de Dados:

× Precisa de ajuda?