Introducció
La revisió de codi i la refactorització són pràctiques essencials en el desenvolupament de programari que ajuden a mantenir la qualitat del codi, millorar la seva llegibilitat i assegurar-se que el codi compleix amb els estàndards establerts. Aquest tema cobrirà els conceptes clau, les tècniques i les millors pràctiques per a la revisió de codi i la refactorització.
Objectius
- Entendre la importància de la revisió de codi.
- Aprendre les tècniques i eines per a la revisió de codi.
- Comprendre què és la refactorització i quan aplicar-la.
- Conèixer les tècniques de refactorització més comunes.
- Aplicar millors pràctiques per a la revisió de codi i la refactorització.
Revisió de Codi
Què és la Revisió de Codi?
La revisió de codi és el procés de revisar el codi font escrit per altres desenvolupadors per assegurar-se que compleix amb els estàndards de qualitat, és lliure d'errors i és fàcil de mantenir.
Importància de la Revisió de Codi
- Millora de la Qualitat del Codi: Identifica errors i problemes potencials abans que arribin a producció.
- Aprenentatge i Col·laboració: Permet als desenvolupadors aprendre uns dels altres i compartir coneixements.
- Estàndards de Codificació: Assegura que el codi compleix amb els estàndards de l'equip o de l'organització.
- Mantenibilitat: Millora la llegibilitat i la mantenibilitat del codi.
Tècniques de Revisió de Codi
- Revisió per Pares (Peer Review): Un desenvolupador revisa el codi escrit per un altre desenvolupador.
- Revisió en Parelles (Pair Programming): Dos desenvolupadors treballen junts en el mateix codi, revisant-lo en temps real.
- Revisió Formal: Un procés estructurat amb reunions i documentació formal.
- Revisió Asíncrona: Utilitza eines de control de versions i plataformes de revisió de codi per revisar el codi de manera asíncrona.
Eines per a la Revisió de Codi
- GitHub: Proporciona eines per a la revisió de codi a través de pull requests.
- GitLab: Ofereix funcionalitats similars a GitHub per a la revisió de codi.
- Bitbucket: Una altra plataforma popular per a la revisió de codi.
- Crucible: Una eina específica per a la revisió de codi.
Exemple de Revisió de Codi
// Codi original public class Calculator { public int Add(int a, int b) { return a + b; } public int Subtract(int a, int b) { return a - b; } } // Comentaris de revisió: // 1. Afegir comentaris XML per documentar els mètodes. // 2. Considerar l'ús de noms de mètodes més descriptius.
Refactorització
Què és la Refactorització?
La refactorització és el procés de modificar el codi existent per millorar la seva estructura interna sense canviar el seu comportament extern.
Importància de la Refactorització
- Millora de la Llegibilitat: Fa que el codi sigui més fàcil de llegir i entendre.
- Reducció de la Complexitat: Simplifica el codi, fent-lo més fàcil de mantenir.
- Eliminació de Codi Redundant: Redueix la duplicació de codi.
- Preparació per a Canvis Futurs: Fa que el codi sigui més flexible i adaptable a futurs canvis.
Tècniques de Refactorització
- Extracció de Mètodes: Divideix mètodes grans en mètodes més petits i específics.
- Canvi de Nom de Variables i Mètodes: Utilitza noms més descriptius per a variables i mètodes.
- Eliminació de Codi Mort: Elimina codi que ja no és necessari.
- Simplificació de Condicionals: Simplifica les estructures condicionals complexes.
Exemple de Refactorització
// Codi original public class Calculator { public int Add(int a, int b) { return a + b; } public int Subtract(int a, int b) { return a - b; } } // Codi refactoritzat /// <summary> /// Provides basic arithmetic operations. /// </summary> public class Calculator { /// <summary> /// Adds two integers. /// </summary> /// <param name="a">The first integer.</param> /// <param name="b">The second integer.</param> /// <returns>The sum of the two integers.</returns> public int Add(int a, int b) { return a + b; } /// <summary> /// Subtracts the second integer from the first integer. /// </summary> /// <param name="a">The first integer.</param> /// <param name="b">The second integer.</param> /// <returns>The difference between the two integers.</returns> public int Subtract(int a, int b) { return a - b; } }
Exercicis Pràctics
Exercici 1: Revisió de Codi
Revisa el següent codi i proporciona comentaris de millora:
public class Person { public string name; public int age; public void Display() { Console.WriteLine("Name: " + name + ", Age: " + age); } }
Solució de l'Exercici 1
// Comentaris de revisió: // 1. Canviar els camps 'name' i 'age' a propietats amb accessors. // 2. Afegir validació per a l'edat. // 3. Afegir comentaris XML per documentar la classe i el mètode.
Exercici 2: Refactorització
Refactoritza el següent codi per millorar la seva llegibilitat i mantenibilitat:
public class Order { public double CalculateTotal(double price, int quantity, double discount) { double total = price * quantity; total = total - (total * discount / 100); return total; } }
Solució de l'Exercici 2
public class Order { /// <summary> /// Calculates the total price after applying the discount. /// </summary> /// <param name="price">The price of a single item.</param> /// <param name="quantity">The quantity of items.</param> /// <param name="discount">The discount percentage.</param> /// <returns>The total price after discount.</returns> public double CalculateTotal(double price, int quantity, double discount) { double total = CalculateSubtotal(price, quantity); return ApplyDiscount(total, discount); } private double CalculateSubtotal(double price, int quantity) { return price * quantity; } private double ApplyDiscount(double total, double discount) { return total - (total * discount / 100); } }
Resum
En aquesta secció, hem après la importància de la revisió de codi i la refactorització, així com les tècniques i millors pràctiques per aplicar-les. La revisió de codi ajuda a millorar la qualitat del codi i facilita l'aprenentatge col·laboratiu, mentre que la refactorització millora la llegibilitat i mantenibilitat del codi. Amb aquestes habilitats, estaràs millor preparat per escriure codi net i eficient que sigui fàcil de mantenir i escalar.
Curs de Programació en C#
Mòdul 1: Introducció al C#
- Introducció al C#
- Configuració de l'Entorn de Desenvolupament
- Programa Hello World
- Sintaxi i Estructura Bàsica
- Variables i Tipus de Dades
Mòdul 2: Estructures de Control
Mòdul 3: Programació Orientada a Objectes
Mòdul 4: Conceptes Avançats de C#
- Interfícies
- Delegats i Esdeveniments
- Genèrics
- Col·leccions
- LINQ (Consulta Integrada al Llenguatge)
- Programació Asíncrona
Mòdul 5: Treballant amb Dades
Mòdul 6: Temes Avançats
- Reflexió
- Atributs
- Programació Dinàmica
- Gestió de Memòria i Recollida d'Escombraries
- Multifil i Programació Paral·lela
Mòdul 7: Construcció d'Aplicacions
Mòdul 8: Millors Pràctiques i Patrons de Disseny
- Estàndards de Codificació i Millors Pràctiques
- Patrons de Disseny
- Proves Unitàries
- Revisió de Codi i Refactorització