Divisão lógica
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
if not Assigned(AInfoGravar) then
exit;
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.