Desenvolvimento Profissional
Como você controla o desenvolvimento dos seus projetos?
Eu quero dizer, os requisitos, fontes, tickets, releases, documentação… ou seja, todo os artefatos do software.
Eu utilizo Git, Tickets, Wikis e GitLab para o controle de todos os meus projetos privados.
Objetos Agregados
Objetos Agregados é uma feature da linguagem Object Pascal. Ela nos permite delegar uma implementação de uma Interface para outro Objeto, utilizando uma sintaxe especial.
No entanto existe um grande problema no design dessa feature que não permite o programador utilizá-la em sua plenitude. Estou falando dos terríveis vazamentos de memória.
Muitos programadores desistem de utilizar Objetos Agregados devido a esses problemas…
Bem, não mais.
Menos é Mais
Já pensou qual seria a quantidade ideal para argumentos em um método? E a quantidade de métodos em uma Interface ou Classe? E quantas Classes você codificaria dentro de uma única unidade?
Vamos tentar obter alguns números.
Classes Adaptadoras
Os dados sempre deverão estar encapsulados em Objetos que conversam entre si enviando mensagens uns aos outros. No entanto essas mensagens podem conter dados no formato que só o Objeto emissor conhece.
Como o Objeto receptor irá saber ler esses dados que, outrora, estavam encapsulados no Objeto emissor?
Diga-me algo Sobre você
Quando aprendemos sobre Orientação a Objetos, anos atrás, ouvimos dizer que Objetos enviam mensagens uns aos outros. No entanto o que realmente vemos na maioria dos códigos de hoje não são verdadeiros Objetos, são apenas estrutura de dados com funções…
Esquecemos o que significa enviar uma mensagem a um Objeto?
Pensando em Dados
Você precisa fazer um relatório financeiro num sistema que possui o código Orientado a Objetos.
Quais Classes e Objetos você precisa criar para representar os dados que serão exibidos no relatório?
Não Culpe o Código Alheio
Você fez entrevista numa grande empresa e foi contratado como Desenvolvedor Senior.
No primeiro dia que lhe dão acesso ao código para corrigir uma pequena falha, você olha o código e pensa:
Mas que P#$@[Piiiiii] é essa?!
Unidades Limítrofes
A maioria dos sistemas utilizam componentes ou libraries de terceiros. Seria perda de tempo codificar cada peça de código específica e necessária ao total funcionamento do sistema, já que existem ótimas opções mundo afora, que já fazem o trabalho específico que queremos implementar.
Mas é prudente utilizar tais peças de código sem nos preocuparmos sobre a manutenibilidade, dependências e encapsulamento?
Funções Aninhadas
Se você tem um Método coeso, que trabalha em apenas uma única tarefa, mas mesmo assim o código parece complicado, dificultando o entendimento e a manutenção… já pensou em refatorar o código utilizando Funções Aninhadas?
Interfaces, Delegação, Problemas e Soluções
Delegação de Implementação através da composição de Objetos é uma feature incrível, só disponível na Linguagem Object Pascal, porém existem alguns problemas intrínsecos no uso dessa tecnologia.
Delegação de Implementação de Interfaces
Existe uma bela feature na linguagem Object Pascal que nem todos sabem que existem. Aqueles que sabem pouco utilizam e, talvez, não tenham percebido o potencial dessa feature para a implementação da Orientação a Objetos numa linguagem de programação.
Linhas em Branco no Método é um Mal Cheiro no Código
Pular linhas dentro de um Método é um “mal cheiro” no código. Significa que você está fazendo coisas demais num único Método.
A declaração WITH-DO é do Mal?
Muita gente odeia utilizar a construção WITH-DO do Pascal. Dizem que é difícil de ler o código, introduz bugs… esqueçam que WITH-DO existe! Eles dizem.
Mas será que WITH-DO é mesmo do mal ou esses programadores é que não sabem utilizá-lo no momento certo?
Procedural é fácil, Orientado a Objetos é difícil
Por que ainda temos discussões sobre a Programação Procedural ser mais fácil do que a Programação Orientada a Objetos? É claro que Programar no paradigma Procedural é mais fácil.
Microservices com Delphi — Parte Final
Uma arquitetura que utiliza Microservices tem seus prós e contras como qualquer outra tecnologia. Será que essa arquitetura foi uma boa escolha para o projeto?