Usando o Inline e Type Nested

Saiba como funciona o InLine e Type Nested, neste artigo de Isaque Pinheiro, com as novidades do compilador do Delphi 2005.

O Inline como o próprio nome já diz (em linha), é uma operação executada pelo compilador em tempo de compilação fazendo com que o compilador substitua uma chamada pelas instruções definidas dentro de uma função ou uma procedure ou métodos.

O Inline pode aumentar o desempenho da aplicação, desde que usada com cautela, pois em alguns caso pode ter efeito contrário. Há duas maneiras de habilitar para que o compilador use Inline ou não. Primeira, definindo a função, procedure ou método com a palavra Inline, como mostra a Listagem 1.

Listagem 1. Função Inline

function funSoma: boolean; inline; var I, X, R: Integer; begin I := 5; X := 6; R := I + X; end; ... var intResult: integer; begin intResult := 50 + funSoma; end;

A segunda, é usando a diretriz {$INLINE}, com os parâmetros ON, OFF ou AUTO como no código a seguir:

interface {$INLINE ON} { ON, OFF ou AUTO }

No parâmetro ON, o compilador considera as funções, procedures ou métodos definidas com inline, OFF o compilador desconsidera as declarações Inline e AUTO o compilador considera Inline em todas as funções pequenas, cujo seu tamanho de código seja aproximadamente 32 bytes ou menor. A Borland aplicou Inline em algumas rotinas da VLC e no RTL, onde ela julgou apropriada.

Há circunstâncias em que não se pode usar Inline, como, por exemplo, em métodos de uma classe que acesse membros protegidos dessa classe.

Nota: O parâmetro AUTO não é aconselhado pela Borland, pois pode gerar executáveis extremamente grandes, e que em conseqüência do aumento de desempenho, o executável ficará ligeiramente maior.

Type Nested

O Type Nested (tipos aninhado) é a declaração de um tipo dentro de outra declaração de tipo, ou seja, pode-se, definir uma classe dentro de outra. Nesse caso, a classe aninhada, só poderá ser instanciada e acessada da classe que a derivou. Evite declarar os tipos aninhados como públicos, a menos que haja uma razão justificável para fazê-la, veja na Listagem 2.

Listagem 2. Declarações de tipos aninhados

type TOuterClass = class strict private myOuterField: Integer; public type TInnerClass = class public myInnerField: Integer; procedure InnerProc; end; procedure OuterProc; end; ... var OuterClass: TOuterClass; InnerClass: TOuterClass.TInnerClass;

Os tipos aninhados são usados em toda estrutura .NET, e durante toda programação POO, e apresentam uma maneira de manter junto os tipos conceituais relacionados e evitar conflitos. Constantes também podem ser declaradas em tipos aninhados como na Listagem 3.

Listagem 3. Constante aninhada

type TMyClass = class const x = 12; y = TMyClass.x + 23; procedure Hello; private const s = 'Contante tipo string'; end; begin writeln(TMyClass.y); { O valor de y é 35 } end.

As constantes aninhadas podem ser de qualquer tipo simples como ordinal, real e string. Você não pode declarar uma constante aninhada, por exemplo, do tipo TDateTime.

Nota: O compilador Delphi tanto .NET para Win32 suportam tipos aninhados.
Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados