Comentários ao longo da mensagem (como de costume)

Walter Alves Chagas Junior wrote:

> Não, a formatação, identação ou colocação das linhas de código não influem no 
> tamanho final da area de Bytecode do exe. O que pode influir seria coisas 
> como a forma como você elabora a lógica. Vejemos um exemplo:
> 
> var
>   isTrue: Boolean;
> begin
>   if X = 0 then
>     isTrue := True
>   else
>     isTrue := False;
> end;
> 
> Isto pode vir a gerar um certo numero de bytes a mais na área de bytecode do 
> Exe. Agora o código acima pode ser otimizado da seguinte forma:
> 
> var
>   isTrue: Boolean;
> begin
>   isTrue := (X = 0);
> end;
> 
> Neste caso, com certeza o numero de bytes na área do bytecode será menor, 
> ocasionando um menor tamanho no Exe final e uma melhora em sua performance.

Muito embora o compilador faça um excelente trabalho. Este código aqui:

if False then
begin
   ...
   ...
   ...
end;

sequer fará parte do executável, o compilador vai remover todo o bloco.

> Blocos Begin end são tratativas de conjunto de comandos que ocuparão uma 
> seção mediante uma situação. Não justifica delimitar uma área de comandos 
> quando seu conteúdo seria somente um comando. Eu penso que o compilador 
> otimizaria isto.
> 
> var
>   isTrue: Boolean;
> begin
>   if X = 0 then
>   begin
>     isTrue := True;
>   end
>   else
>   begin
>     isTrue := False;
>   end
> end;
> 
> ERRADO!

Não está errado, por sinal conheço alguns ótimos desenvolvedores, dentre 
os quais os desenvolvedores da Indy, que *sempre* usam begin/end aonde o 
uso é opcional. É apenas questão de gosto, e o código final terá o mesmo 
tamanho.

> formatacao 2) Em linhas individuais:
> 
> qrConsulta.SQL.Add('
> +' SELECT' 
> +'   Endereco,' 
> +'   Nome,'
> +'   Cidade'
> +' FROM'
> +'   Cliente'
> +' WHERE' 
> +'   Nome > :Inicio' 
> +' ORDER BY Nome')
> 
> 
> Duvida: Neste caso 1, alguma das duas formataçoes influencia no 
> tamanho final do executavo, principalmente pela qtde de linhas 
> diferentes entre uma e outra? Ou o compliador do Delphi trata tudo 
> como um comando só?

Isto sim, como trata-se de uma constante string ela ocupará exatamente 
este espaço, com os respectivos brancos.

De qualquer forma é inútil ficar contanto os bytes do executável. Muito 
mais importante do que isto é a construção de códigos otimizados, que 
façam a tarefa da forma mais prática e rápida possível.

--
Joao Morais

Responder a