La revisió de codi és una part essencial del procés de desenvolupament de programari. No només ajuda a detectar errors i millorar la qualitat del codi, sinó que també fomenta l'aprenentatge i la col·laboració entre els membres de l'equip. En aquesta secció, explorarem les millors pràctiques per a la revisió de codi i com proporcionar feedback constructiu.
Objectius de la Revisió de Codi
- Millorar la Qualitat del Codi: Identificar i corregir errors, millorar la llegibilitat i assegurar-se que el codi compleix amb els estàndards establerts.
- Compartir Coneixement: Fomentar l'aprenentatge entre els membres de l'equip, compartint tècniques i solucions.
- Detectar Problemes de Disseny: Identificar problemes potencials en el disseny del sistema abans que es converteixin en problemes majors.
- Assegurar la Consistència: Garantir que el codi segueix un estil i convencions consistents.
Millors Pràctiques per a la Revisió de Codi
- Establir Estàndards de Codi
- Defineix un conjunt d'estàndards de codi que tots els membres de l'equip han de seguir.
- Utilitza eines de formateig automàtic per assegurar la consistència.
- Utilitzar Eines de Revisió de Codi
- Plataformes com GitHub, GitLab o Bitbucket ofereixen eines integrades per a la revisió de codi.
- Aquestes eines permeten fer comentaris línia per línia i gestionar les sol·licituds de canvi.
- Revisar Codi en Petites Quantitats
- Les revisions de codi han de ser manejables. Revisar grans quantitats de codi pot ser aclaparador i menys efectiu.
- Recomanació: Revisar no més de 200-400 línies de codi per sessió.
- Proporcionar Feedback Constructiu
- Sigues específic en els teus comentaris. En lloc de dir "Això no està bé", explica per què i com es pot millorar.
- Utilitza un to positiu i respectuós. Recorda que l'objectiu és millorar el codi, no criticar la persona.
- Fomentar la Discussió i el Diàleg
- La revisió de codi ha de ser un procés col·laboratiu. Fomenta la discussió i el diàleg per arribar a les millors solucions.
- Documentar les Decisions
- Mantingues un registre de les decisions preses durant la revisió de codi. Això ajuda a mantenir la coherència i serveix com a referència futura.
Exemple de Revisió de Codi
Fragment de Codi a Revisar
#include <stdio.h> void printArray(int arr[], int size) { for (int i = 0; i < size; i++) { printf("%d ", arr[i]); } printf("\n"); } int main() { int myArray[5] = {1, 2, 3, 4, 5}; printArray(myArray, 5); return 0; }
Comentaris de Revisió
-
Comentari sobre la Funció
printArray
:- Comentari: "Considera afegir una descripció de la funció
printArray
per explicar què fa i quins són els seus paràmetres." - Feedback Constructiu: "Afegir comentaris a les funcions ajuda a altres desenvolupadors a entendre el codi més ràpidament. Per exemple:
// Aquesta funció imprimeix els elements d'un array
."
- Comentari: "Considera afegir una descripció de la funció
-
Comentari sobre l'ús de
printf
:- Comentari: "És una bona pràctica afegir un espai o un caràcter de nova línia després de l'últim element per millorar la llegibilitat de la sortida."
- Feedback Constructiu: "Podries modificar la línia
printf("%d ", arr[i]);
aprintf("%d ", arr[i]);
per assegurar que la sortida és més clara."
-
Comentari sobre la Declaració de l'Array:
- Comentari: "Considera utilitzar una constant per a la mida de l'array per facilitar el manteniment del codi."
- Feedback Constructiu: "Definir una constant com
#define SIZE 5
i utilitzar-la en lloc de5
a la declaració de l'array i la crida aprintArray
."
Codi Revisat
#include <stdio.h> #define SIZE 5 // Aquesta funció imprimeix els elements d'un array void printArray(int arr[], int size) { for (int i = 0; i < size; i++) { printf("%d ", arr[i]); } printf("\n"); } int main() { int myArray[SIZE] = {1, 2, 3, 4, 5}; printArray(myArray, SIZE); return 0; }
Exercici Pràctic
Tasca
Revisa el següent fragment de codi i proporciona feedback constructiu:
#include <stdio.h> void reverseArray(int arr[], int size) { int start = 0; int end = size - 1; while (start < end) { int temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; start++; end--; } } int main() { int myArray[6] = {1, 2, 3, 4, 5, 6}; reverseArray(myArray, 6); for (int i = 0; i < 6; i++) { printf("%d ", myArray[i]); } printf("\n"); return 0; }
Solució Proposada
-
Comentari sobre la Funció
reverseArray
:- Comentari: "Afegir una descripció de la funció
reverseArray
per explicar què fa i quins són els seus paràmetres." - Feedback Constructiu: "Afegir comentaris a les funcions ajuda a altres desenvolupadors a entendre el codi més ràpidament. Per exemple:
// Aquesta funció inverteix els elements d'un array
."
- Comentari: "Afegir una descripció de la funció
-
Comentari sobre la Declaració de l'Array:
- Comentari: "Considera utilitzar una constant per a la mida de l'array per facilitar el manteniment del codi."
- Feedback Constructiu: "Definir una constant com
#define SIZE 6
i utilitzar-la en lloc de6
a la declaració de l'array i la crida areverseArray
."
-
Comentari sobre l'ús de
printf
:- Comentari: "És una bona pràctica afegir un espai o un caràcter de nova línia després de l'últim element per millorar la llegibilitat de la sortida."
- Feedback Constructiu: "Podries modificar la línia
printf("%d ", myArray[i]);
aprintf("%d ", myArray[i]);
per assegurar que la sortida és més clara."
Codi Revisat
#include <stdio.h> #define SIZE 6 // Aquesta funció inverteix els elements d'un array void reverseArray(int arr[], int size) { int start = 0; int end = size - 1; while (start < end) { int temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; start++; end--; } } int main() { int myArray[SIZE] = {1, 2, 3, 4, 5, 6}; reverseArray(myArray, SIZE); for (int i = 0; i < SIZE; i++) { printf("%d ", myArray[i]); } printf("\n"); return 0; }
Conclusió
La revisió de codi és una eina poderosa per millorar la qualitat del codi i fomentar la col·laboració dins d'un equip de desenvolupament. Seguint les millors pràctiques i proporcionant feedback constructiu, podem assegurar-nos que el nostre codi és robust, llegible i mantenible. Recorda que l'objectiu de la revisió de codi és aprendre i millorar contínuament.
Curs de Programació en C
Mòdul 1: Introducció al C
- Introducció a la Programació
- Configuració de l'Entorn de Desenvolupament
- Programa Hello World
- Sintaxi i Estructura Bàsiques
Mòdul 2: Tipus de Dades i Variables
Mòdul 3: Flux de Control
Mòdul 4: Funcions
- Introducció a les Funcions
- Arguments de Funció i Valors de Retorn
- Àmbit i Durada de les Variables
- Funcions Recursives
Mòdul 5: Arrays i Strings
Mòdul 6: Punteres
Mòdul 7: Estructures i Unions
Mòdul 8: Assignació Dinàmica de Memòria
Mòdul 9: Gestió d'Arxius
- Introducció a la Gestió d'Arxius
- Lectura i Escriptura d'Arxius
- Posicionament d'Arxius
- Gestió d'Errors en Operacions d'Arxius
Mòdul 10: Temes Avançats
- Directives del Preprocessador
- Arguments de Línia de Comandes
- Llistes d'Arguments Variables
- Multifil en C
Mòdul 11: Millors Pràctiques i Optimització
- Llegibilitat del Codi i Documentació
- Tècniques de Depuració
- Optimització del Rendiment
- Consideracions de Seguretat