Categoria

Qualidade de Código, Design e Manutenção

Lei de Demeter na prática: encapsulamento real em objetos
Qualidade de Código, Design e Manutenção

Lei de Demeter na prática: encapsulamento real em objetos

A Lei de Demeter, também conhecida como Princípio do Mínimo Conhecimento, foi formulada no final dos anos 1980 no projeto Demeter da Northeastern University. Sua essência é simples: um objeto deve ter conhecimento limitado sobre a estrutura interna de outros objetos. Na prática, isso se traduz na regra "fale apenas com seus amigos imediatos".

27/08/2024
Como usar o padrão decorator para adicionar comportamento sem herança
Qualidade de Código, Design e Manutenção 25/08/2024

Como usar o padrão decorator para adicionar comportamento sem herança

O padrão Decorator é uma solução elegante para um problema clássico da programação orientada a objetos: a explosão de subclasses. Quando precisamos adicionar comportamentos variados a um objeto, a herança tradicional leva a uma proliferação de classes combinatórias. Por exemplo, para um sistema de notificações, poderíamos ter NotificacaoEmail, NotificacaoSMS, NotificacaoEmailSMS, NotificacaoEmailSlack, e assim por diante — uma combinação para cada variação.

Gerenciamento de erros e exceções
Qualidade de Código, Design e Manutenção 20/08/2024

Gerenciamento de erros e exceções

O gerenciamento de erros e exceções é um dos pilares da construção de sistemas robustos e confiáveis. Para compreendê-lo plenamente, é essencial distinguir três conceitos fundamentais:

Como sincronizar dados entre sistemas legados e modernos com event bridges
Qualidade de Código, Design e Manutenção 04/08/2024

Como sincronizar dados entre sistemas legados e modernos com event bridges

Sistemas legados são a espinha dorsal de muitas organizações. Construídos ao longo de décadas, eles armazenam dados críticos de clientes, transações financeiras e inventários. Suas características típicas incluem bancos de dados relacionais monolíticos, interfaces baseadas em arquivos (CSV, XML) e APIs REST antigas com documentação escassa. Apesar de sua estabilidade, esses sistemas apresentam limitações severas: baixa escalabilidade horizontal, dificuldade de integração com tecnologias modernas

Como escrever um RFC técnico que as pessoas realmente leem
Qualidade de Código, Design e Manutenção 30/07/2024

Como escrever um RFC técnico que as pessoas realmente leem

O Request for Comments (RFC) é uma ferramenta clássica de engenharia de software, mas na prática muitos se tornam armadilhas de produtividade. O problema não é o formato — é como eles são escritos. Documentos de 30 páginas com diagramas complexos, jargão excessivo e falta de contexto claro fazem com que revisores pulem parágrafos ou, pior, ignorem o documento por completo.

Introdução ao padrão command para operações reversíveis
Qualidade de Código, Design e Manutenção 30/07/2024

Introdução ao padrão command para operações reversíveis

O padrão Command é um dos 23 padrões de design do catálogo GoF (Gang of Four), classificado como padrão comportamental. Sua definição original estabelece que ele "encapsula uma solicitação como um objeto, permitindo parametrizar clientes com diferentes solicitações, enfileirar ou registrar solicitações e suportar operações reversíveis".

Effect-TS: programação funcional tipada que está dividindo a comunidade TypeScript
Qualidade de Código, Design e Manutenção 22/07/2024

Effect-TS: programação funcional tipada que está dividindo a comunidade TypeScript

O TypeScript evoluiu de forma notável desde sua criação. No início, bibliotecas como lodash/fp tentavam trazer um pouco de imutabilidade e composição funcional para o ecossistema JavaScript. Depois veio o fp-ts, que introduziu conceitos como Option, Either e Task, oferecendo uma abordagem mais rigorosa de programação funcional tipada. No entanto, fp-ts sempre foi visto como uma biblioteca de conceitos — excelente para aprender, mas difícil de usar em produção sem um arcabouço mais completo.

Como usar linters personalizados para impor convenções de arquitetura
Qualidade de Código, Design e Manutenção 21/07/2024

Como usar linters personalizados para impor convenções de arquitetura

Linters genéricos como ESLint, Pylint ou Checkstyle são excelentes para capturar erros de sintaxe, problemas de estilo e más práticas comuns de codificação. No entanto, eles são cegos para questões arquiteturais. Um linter genérico não sabe que sua camada de apresentação não deve importar diretamente classes da camada de infraestrutura, ou que módulos específicos não devem depender uns dos outros.

Como usar mutation testing para medir a qualidade dos seus testes
Qualidade de Código, Design e Manutenção 30/06/2024

Como usar mutation testing para medir a qualidade dos seus testes

Mutation testing é uma técnica de avaliação de testes que introduz pequenas alterações sintáticas no código fonte — chamadas de mutantes — para simular bugs comuns. Cada mutante representa uma versão modificada do programa original, como trocar > por <, alterar uma constante numérica ou remover uma chamada de método.