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?
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…
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.
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?
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?
Tipo object Continua Vivo
Existe uma estrutura no Object Pascal que foi o precursor das classes.
Você conhece o tipo object
?
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?
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?
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?
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?
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.
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?
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?
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.