Memória Segura Utilizando Instâncias de Interfaces

Você sabe que ao utilizar instâncias de interfaces não é necessário destruir o objeto manualmente, utilizando o método Free.

Isso ocorre por quê instâncias de interfaces possuem uma contagem de referência e, assim, o compilador sabe quando desalocar a instância automaticamente.

Mas e se se ocorrer uma exceção dentro de um método de uma instância, numa composição de instâncias de interfaces, seria seguro não utilizar try-finally para ter a certeza que todos os objetos serão desalocados, atribuindo nil as instâncias?

Continue →

Classes Mutáveis vs Objetos Imutáveis

É possível ter a comodidade em utilizar classes mutáveis para construir os objetos aos poucos, configurando propriedades e opções de execução além do uso dos construtores, porém com a vantagem de obter instâncias imutáveis no final do processo.

E eu não estou falando do padrão Builder. Aliás você não deveria precisar construir uma classe para criar uma instância de outra classe…

Continue →

Implementando Interfaces Utilizando Diferente Assinaturas de Métodos

Como implementar em uma única classe, duas ou mais interfaces que tenham métodos com o mesmo nome e argumentos?

Talvez o pensamento mais natural à essa pergunta seria: “por quê eu iria querer fazer isso?”.

Se você nunca precisou implementar essa situação antes, pode ser difícil imaginar tal cenário agora. Mas vou lhe mostrar que ele existe e que não é só possível implementá-lo como também é uma ótima técnica para conhecer.

Continue →

Usando Paths ao invés de Diretivas de Compilação

Já pensou em utilizar paths, ao invés de diretivas de compilação, para compilar seu projeto em diferentes plataformas?

Continue →

Trabalhando com Exceções em Requisições HTTP

Em requisições HTTP, devemos levantar uma exceção quando recebermos, por exemplo, um código 500?

Continue →

Tipo object Continua Vivo

Existe uma estrutura no Object Pascal que foi o precursor das classes.

Você conhece o tipo object?

Continue →

Array de Objetos

Quando você precisa de uma simples lista de objetos, qual estrutura você utiliza?

Continue →

Variáveis Locais Deveriam ter Nomes Curtos

Já pensou que você pode estar dificultando a leitura do seu código por utilizar nomes mais longos e verbosos em variáveis locais do que utilizando nomes mais curtos?

Continue →

Como Dividir e Organizar o Código em Formulários com Muitos Widgets

Definir dezenas de métodos em formulários e DataModules parece ser comum entre programadores. Podemos fazer algo para minimizar essa prática?

Continue →

Pascal Deveria ser Modernizado?

Ao longo dos anos, desde Turbo Pascal até as versões mais atuais do Delphi e Lazarus, temos visto muitas mudanças na linguagem.

Você acha que estamos modernizando a linguagem Object Pascal?

Continue →

Records - Antiga Nova Tecnologia

O tipo Record pode ter métodos e até mesmo campos privados. Seria isso considerado uma abominação para um código Orientado a Objetos?

Continue →

Builder Classes Simplificado

O padrão Builder utiliza no mínimo 2 classes: 1 classe para instância a ser construída e 1 classe para a instância construtora.

Nesse artigo irei utilizar um Builder simplificado, que irá utilizar a mesma classe tanto para construir como para representar a instância final.

Continue →

Como Transformar uma Instância de Classe em Instância de Interface

E se a linguagem Object Pascal nos permitisse codificar uma instância de classe que se auto destrói quando não mais precisamos dela?

É possível transformar uma instância de classe para se comportar como uma instância de interface?

Continue →

Interfaces e Casting

Seria um anti-padrão verificar se um objeto implementa determinada(s) interface(s)? Seria essa prática considerada o mesmo que casting?

Continue →

Como Trabalhar com Libraries sem Pacotes

Como seria trabalhar em um projeto que utiliza libraries que não possuem pacotes? Se cada desenvolvedor tiver cópias das libraries em paths diferentes, as configurações do projeto não devem utilizar paths pré-determinados.

Continue →