En aquest tema, explorarem els estàndards de codificació i les millors pràctiques que hauríem de seguir quan escrivim codi en C#. Seguir aquests estàndards no només fa que el codi sigui més llegible i mantenible, sinó que també ajuda a evitar errors comuns i millora la col·laboració en equips de desenvolupament.
- Estàndards de Codificació
1.1. Nomenclatura
1.1.1. Noms de Classes i Mètodes
- Classes: Utilitza el format PascalCase.
public class CustomerAccount { // ... }
- Mètodes: També utilitza el format PascalCase.
public void CalculateInterest() { // ... }
1.1.2. Noms de Variables i Camps
- Variables locals i paràmetres: Utilitza el format camelCase.
int accountBalance; string customerName;
- Camps privats: Utilitza el format _camelCase.
private int _accountBalance; private string _customerName;
1.1.3. Noms de Constants
- Constants: Utilitza el format PascalCase.
public const int MaxRetryAttempts = 3;
1.2. Format i Espaiat
1.2.1. Indentació
- Utilitza quatre espais per a la indentació. No utilitzis tabuladors.
public void ProcessTransaction() { if (transactionIsValid) { // Process the transaction } }
1.2.2. Espaiat
- Deixa una línia en blanc entre mètodes per millorar la llegibilitat.
public void MethodOne() { // ... } public void MethodTwo() { // ... }
1.3. Comentaris
1.3.1. Comentaris de Línia
- Utilitza comentaris de línia per explicar el codi complex o no evident.
// Calcula l'interès basat en el saldo actual public void CalculateInterest() { // ... }
1.3.2. Comentaris de Bloc
- Utilitza comentaris de bloc per a descripcions més llargues o per desactivar codi.
/* * Aquest mètode processa la transacció * i actualitza el saldo del compte. */ public void ProcessTransaction() { // ... }
- Millors Pràctiques
2.1. Escrivint Codi Neteja
2.1.1. Mètodes Curts i Concrets
- Mantingues els mètodes curts i amb una sola responsabilitat.
public void SaveCustomerData(Customer customer) { ValidateCustomer(customer); SaveToDatabase(customer); }
2.1.2. Evita la Duplicació de Codi
- Reutilitza codi mitjançant mètodes i classes.
public void ProcessOrder(Order order) { ValidateOrder(order); SaveOrder(order); } private void ValidateOrder(Order order) { // Validació de l'ordre } private void SaveOrder(Order order) { // Guardar l'ordre a la base de dades }
2.2. Gestió d'Errors
2.2.1. Utilitza Excepcions
- Utilitza excepcions per gestionar errors i condicions excepcionals.
public void ProcessPayment(Payment payment) { if (payment == null) { throw new ArgumentNullException(nameof(payment)); } // Processar el pagament }
2.2.2. Captura Excepcions Específiques
- Captura excepcions específiques en lloc de capturar excepcions generals.
try { // Codi que pot generar una excepció } catch (InvalidOperationException ex) { // Gestió específica per InvalidOperationException }
2.3. Documentació
2.3.1. Comentaris XML
- Utilitza comentaris XML per documentar mètodes i classes.
/// <summary> /// Calcula l'interès basat en el saldo actual. /// </summary> /// <param name="balance">El saldo actual.</param> /// <returns>L'interès calculat.</returns> public decimal CalculateInterest(decimal balance) { // ... }
2.4. Proves
2.4.1. Escriu Proves Unitàries
- Escriu proves unitàries per assegurar-te que el codi funciona correctament.
[TestMethod] public void CalculateInterest_ShouldReturnCorrectInterest() { // Arrange var account = new BankAccount(); account.Deposit(1000); // Act var interest = account.CalculateInterest(); // Assert Assert.AreEqual(50, interest); }
Exercicis Pràctics
Exercici 1: Refactorització de Codi
Refactoritza el següent codi per seguir els estàndards de codificació i millors pràctiques:
public class bankaccount { public decimal balance; public void deposit(decimal amount) { balance += amount; } public void withdraw(decimal amount) { if (balance >= amount) { balance -= amount; } } }
Solució:
public class BankAccount { private decimal _balance; public void Deposit(decimal amount) { _balance += amount; } public void Withdraw(decimal amount) { if (_balance >= amount) { _balance -= amount; } } }
Exercici 2: Escriure Proves Unitàries
Escriu una prova unitària per al mètode Withdraw
de la classe BankAccount
.
Solució:
[TestMethod] public void Withdraw_ShouldDecreaseBalance_WhenAmountIsAvailable() { // Arrange var account = new BankAccount(); account.Deposit(1000); // Act account.Withdraw(500); // Assert Assert.AreEqual(500, account.GetBalance()); }
Conclusió
Seguir els estàndards de codificació i les millors pràctiques és essencial per escriure codi net, llegible i mantenible. Aquests estàndards no només milloren la qualitat del codi, sinó que també faciliten la col·laboració en equips de desenvolupament. Practica aquests principis en els teus projectes per convertir-te en un programador més eficient i efectiu.
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ó