Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Current »

A divisão lógica de código é uma prática importante para garantir que seu código seja fácil de entender, manter e modificar. Você pode seguir princípios de design e boas práticas para organizar seu código de forma mais limpa.

1 - Divisão por Responsabilidade

No VsScripter é possível adicionar várias unit´s para um projeto muito grande, e com isso poderá organizar o código que tenham responsabilidades bem definidas. Cada UNIT deve se concentrar em uma tarefa específica. Por exemplo, se você estiver desenvolvendo algo para um gerenciamento de clientes, pode ter unidades separadas para manipular a interface do usuário, processar lógica de negócios, e acessar dados no banco de dados.

Isso poderá ser muito útil quando há um projeto muito grande e que o código está muito extenso, então a dica é refatorar esse código em uma nova UNIT.

2 - Evite Código Espaguete

Evite códigos extensos e complexos que são difíceis de entender. Separe lógicas diferentes em funções ou métodos menores e mais específicos.

3 - Use Comentários Adequados

Comentários podem ser úteis para explicar partes específicas do código, mas o código em si deve ser autoexplicativo sempre que possível. Comentários em excesso podem tornar o código mais difícil de ler.

Aqui está um exemplo básico de como você pode estruturar o código e mantê-lo mais limpo e fácil de prestar manutenção.

Formulário principal: uPrinc

uses
  Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, StdCtrls, 
  uVsClientDataSet, DBClient, DB, uCalculos, uProcessarDados;
          
procedure RealizarCalculos;
begin
  ShowMessage(FloatToStr(Dividir(5, 2)));
  ShowMessage(FloatToStr(Multiplicar(5, 2)));
  ShowMessage(FloatToStr(Somar(5, 2)));
  ShowMessage(FloatToStr(Subtrair(5, 2)));
end;

procedure ProcessarDados;
var                                                  
  vCdsTemp: TVsClientDataSet;
begin
  vCdsTemp:= TVsClientDataSet.Create(nil);
  try
    vCdsTemp.Data := dmConexao3c.QueryPegaData(
      '#SELECT * FROM CIDADE WHERE CIDADE = 02431', '*', [], [], []
    );
    
    vCdsTemp.Edit;
    vCdsTemp.FieldByName('NOME').AsString := 
      'Documentação boas práticas de codificação no VsScripter';
      
    vCdsTemp.Post;
    EnviarParaBD(vCdsTemp.Data);
  finally
    vCdsTemp.Free;  
  end;
end;
                                                               
begin 
  RealizarCalculos;
  ProcessarDados; 
end;   

Formulário de cálculos: uCalculos

uses   
  Classes, SysUtils;
  
function Somar(AValor01: Real; AValor02: Real): Real;
begin
  Result := AValor01 + AValor02;
end;
            
function Subtrair(AValor01: Real; AValor02: Real): Real;
begin
  Result := AValor01 - AValor02;
end;

function Dividir(AValor01: Real; AValor02: Real): Real;
begin
  Result := 0;
  if AValor02 > 0 then 
    Result := AValor01 / AValor02; 
end;

function Multiplicar(AValor01: Real; AValor02: Real): Real;
begin
  Result := AValor01 * AValor02;
end;   

Formulário de processamento de dados: uProcessarDados

uses
  Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, 
  StdCtrls, uVsClientDataSet, DBClient, DB;    
  
procedure EnviarParaBD(AInfoGravar: OleVariant);
var
  vCdsAux: TVsClientDataSet;       
begin
  vCdsAux := TVsClientDataSet.Create(nil);          
  try
    dmConexao3c.GetDspEdicao(vCdsAux, 'CIDADE');
    vCdsAux.Data := AInfoGravar;
    dmConexao3c.CDSApplyUpdates([vCdsAux]);
  finally
    vCdsAux.Free;   
  end;
end;

Este é um exemplo muito simples, mas mostra a ideia de separação de responsabilidades. A chave é manter cada unidade focada em uma tarefa específica.

  • No labels