La refactorització és el procés de millorar el codi sense canviar-ne el comportament extern. L'objectiu és fer que el codi sigui més llegible, mantenible i extensible. En aquest tema, explorarem diverses tècniques de refactorització que es poden aplicar en Delphi/Object Pascal.

Objectius del Tema

  • Entendre què és la refactorització i per què és important.
  • Aprendre tècniques comunes de refactorització.
  • Aplicar aquestes tècniques en exemples pràctics.
  • Reconèixer quan és necessari refactoritzar el codi.

Què és la Refactorització?

La refactorització implica modificar l'estructura interna del codi per millorar-ne la qualitat sense alterar-ne el comportament extern. Això pot incloure la simplificació de codi complex, l'eliminació de duplicats, la millora de noms de variables i funcions, i la reorganització de codi per fer-lo més comprensible.

Beneficis de la Refactorització

  • Millora de la llegibilitat: El codi és més fàcil de llegir i entendre.
  • Facilitat de manteniment: El codi ben estructurat és més fàcil de mantenir i actualitzar.
  • Reducció d'errors: Un codi més clar i organitzat redueix la probabilitat d'errors.
  • Facilitat d'extensió: És més fàcil afegir noves funcionalitats a un codi ben estructurat.

Tècniques Comunes de Refactorització

  1. Extracció de Mètode

L'extracció de mètode consisteix a moure un fragment de codi a un nou mètode amb un nom descriptiu. Això ajuda a reduir la complexitat dels mètodes i a millorar la llegibilitat.

Exemple:

Abans:

procedure TForm1.Button1Click(Sender: TObject);
begin
  // Codi per validar l'entrada
  if Edit1.Text = '' then
  begin
    ShowMessage('El camp no pot estar buit');
    Exit;
  end;

  // Codi per processar l'entrada
  // ...
end;

Després:

procedure TForm1.Button1Click(Sender: TObject);
begin
  if not ValidateInput then Exit;
  ProcessInput;
end;

function TForm1.ValidateInput: Boolean;
begin
  Result := True;
  if Edit1.Text = '' then
  begin
    ShowMessage('El camp no pot estar buit');
    Result := False;
  end;
end;

procedure TForm1.ProcessInput;
begin
  // Codi per processar l'entrada
  // ...
end;

  1. Canvi de Nom (Renaming)

Canviar el nom de variables, mètodes o classes per noms més descriptius pot millorar significativament la comprensió del codi.

Exemple:

Abans:

var
  a: Integer;
begin
  a := 10;
  // ...
end;

Després:

var
  itemCount: Integer;
begin
  itemCount := 10;
  // ...
end;

  1. Eliminació de Codi Mort

El codi mort és aquell que no s'utilitza o que mai s'executa. Eliminar aquest codi pot reduir la complexitat i millorar la llegibilitat.

Exemple:

Abans:

procedure TForm1.OldMethod;
begin
  // Codi que ja no s'utilitza
end;

Després:

// El mètode OldMethod ha estat eliminat

  1. Simplificació de Condicions

Les condicions complexes poden ser difícils de llegir i entendre. Simplificar-les pot millorar la claredat del codi.

Exemple:

Abans:

if (a > 0) and (a < 10) and (b = True) then
begin
  // ...
end;

Després:

if IsValid(a, b) then
begin
  // ...
end;

function TForm1.IsValid(a: Integer; b: Boolean): Boolean;
begin
  Result := (a > 0) and (a < 10) and b;
end;

  1. Substitució de Màgia per Constants

Els números o cadenes màgiques són valors literals que apareixen en el codi sense cap explicació. Substituir-los per constants amb noms descriptius pot millorar la comprensió.

Exemple:

Abans:

if a = 42 then
begin
  // ...
end;

Després:

const
  AnswerToEverything = 42;

if a = AnswerToEverything then
begin
  // ...
end;

Exercicis Pràctics

Exercici 1: Extracció de Mètode

Refactoritza el següent codi per extreure un mètode que validi l'entrada.

procedure TForm1.Button1Click(Sender: TObject);
begin
  if Edit1.Text = '' then
  begin
    ShowMessage('El camp no pot estar buit');
    Exit;
  end;

  // Codi per processar l'entrada
  // ...
end;

Solució:

procedure TForm1.Button1Click(Sender: TObject);
begin
  if not ValidateInput then Exit;
  ProcessInput;
end;

function TForm1.ValidateInput: Boolean;
begin
  Result := True;
  if Edit1.Text = '' then
  begin
    ShowMessage('El camp no pot estar buit');
    Result := False;
  end;
end;

procedure TForm1.ProcessInput;
begin
  // Codi per processar l'entrada
  // ...
end;

Exercici 2: Canvi de Nom

Canvia els noms de les variables i mètodes següents per noms més descriptius.

var
  x: Integer;
begin
  x := 10;
  // ...
end;

procedure DoSomething;
begin
  // ...
end;

Solució:

var
  itemCount: Integer;
begin
  itemCount := 10;
  // ...
end;

procedure ProcessItems;
begin
  // ...
end;

Resum

En aquest tema, hem après què és la refactorització i per què és important. Hem explorat diverses tècniques de refactorització, com l'extracció de mètodes, el canvi de nom, l'eliminació de codi mort, la simplificació de condicions i la substitució de màgia per constants. També hem aplicat aquestes tècniques en exemples pràctics per millorar la qualitat del codi.

La refactorització és una habilitat essencial per a qualsevol programador, ja que ajuda a mantenir el codi net, llegible i fàcil de mantenir. Practicar aquestes tècniques regularment pot millorar significativament la qualitat del teu codi i la teva productivitat com a desenvolupador.

Curs de Programació Delphi/Object Pascal

Mòdul 1: Introducció a Delphi/Object Pascal

Mòdul 2: Estructures de Control i Procediments

Mòdul 3: Treballant amb Dades

Mòdul 4: Programació Orientada a Objectes

Mòdul 5: Funcions Avançades de Delphi

Mòdul 6: Desenvolupament d'Interfícies Gràfiques amb VCL i FMX

Mòdul 7: Desenvolupament Web i Mòbil

Mòdul 8: Millors Pràctiques i Patrons de Disseny

Mòdul 9: Projecte Final

© Copyright 2024. Tots els drets reservats