Escriure codi net és essencial per mantenir la qualitat del programari, facilitar el manteniment i assegurar que altres desenvolupadors puguin entendre i treballar amb el teu codi. A continuació, es presenten alguns consells i pràctiques recomanades per escriure codi net en aplicacions Spring Boot.

  1. Utilitza noms descriptius

Explicació

Els noms de variables, mètodes i classes han de ser descriptius i reflectir clarament la seva funció. Això facilita la comprensió del codi sense necessitat de comentaris addicionals.

Exemple

// Nom poc descriptiu
int d; // dies des de la creació

// Nom descriptiu
int daysSinceCreation;

  1. Segueix el principi de responsabilitat única (SRP)

Explicació

Cada classe o mètode ha de tenir una única responsabilitat o funció. Això fa que el codi sigui més modular i fàcil de mantenir.

Exemple

// Classe amb múltiples responsabilitats
public class UserService {
    public void createUser(User user) {
        // Codi per crear un usuari
    }

    public void sendWelcomeEmail(User user) {
        // Codi per enviar un correu de benvinguda
    }
}

// Classes amb responsabilitats úniques
public class UserService {
    public void createUser(User user) {
        // Codi per crear un usuari
    }
}

public class EmailService {
    public void sendWelcomeEmail(User user) {
        // Codi per enviar un correu de benvinguda
    }
}

  1. Evita els mètodes llargs

Explicació

Els mètodes llargs poden ser difícils de llegir i entendre. Divideix els mètodes llargs en mètodes més petits i amb noms descriptius.

Exemple

// Mètode llarg
public void processOrder(Order order) {
    validateOrder(order);
    calculateTotal(order);
    saveOrder(order);
    sendConfirmationEmail(order);
}

// Mètodes més petits i descriptius
public void processOrder(Order order) {
    validateOrder(order);
    calculateTotal(order);
    saveOrder(order);
    sendConfirmationEmail(order);
}

private void validateOrder(Order order) {
    // Validació de la comanda
}

private void calculateTotal(Order order) {
    // Càlcul del total
}

private void saveOrder(Order order) {
    // Guardar la comanda
}

private void sendConfirmationEmail(Order order) {
    // Enviar correu de confirmació
}

  1. Utilitza anotacions de Spring Boot de manera adequada

Explicació

Les anotacions de Spring Boot com @Service, @Repository, @Controller, etc., ajuden a organitzar el codi i a indicar clarament la funció de cada component.

Exemple

// Ús adequat d'anotacions
@Service
public class UserService {
    // Lògica del servei d'usuari
}

@Repository
public class UserRepository {
    // Lògica d'accés a dades
}

@Controller
public class UserController {
    // Lògica del controlador
}

  1. Escriu proves unitàries i d'integració

Explicació

Les proves unitàries i d'integració asseguren que el codi funcioni correctament i ajuden a detectar errors ràpidament. Utilitza JUnit i Mockito per escriure proves efectives.

Exemple

// Prova unitària amb JUnit
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserServiceTest {

    @Autowired
    private UserService userService;

    @Test
    public void testCreateUser() {
        User user = new User("John", "Doe");
        userService.createUser(user);
        assertNotNull(user.getId());
    }
}

  1. Documenta el codi quan sigui necessari

Explicació

Tot i que el codi net ha de ser autoexplicatiu, hi ha situacions en què la documentació és necessària per aclarir la lògica complexa o decisions de disseny.

Exemple

/**
 * Calcula el total de la comanda aplicant descomptes.
 *
 * @param order la comanda a calcular
 * @return el total de la comanda amb descomptes aplicats
 */
public BigDecimal calculateTotal(Order order) {
    // Lògica de càlcul
}

  1. Refactoritza regularment

Explicació

Refactoritzar el codi de manera regular ajuda a mantenir-lo net i millorar la seva qualitat. Identifica i elimina codi duplicat, simplifica mètodes complexos i millora la llegibilitat.

Exemple

// Codi abans de la refactorització
public void processOrder(Order order) {
    // Validació de la comanda
    if (order == null || order.getItems().isEmpty()) {
        throw new IllegalArgumentException("Order is invalid");
    }

    // Càlcul del total
    BigDecimal total = BigDecimal.ZERO;
    for (Item item : order.getItems()) {
        total = total.add(item.getPrice());
    }

    // Guardar la comanda
    order.setTotal(total);
    orderRepository.save(order);

    // Enviar correu de confirmació
    emailService.sendConfirmationEmail(order);
}

// Codi després de la refactorització
public void processOrder(Order order) {
    validateOrder(order);
    calculateTotal(order);
    saveOrder(order);
    sendConfirmationEmail(order);
}

private void validateOrder(Order order) {
    if (order == null || order.getItems().isEmpty()) {
        throw new IllegalArgumentException("Order is invalid");
    }
}

private void calculateTotal(Order order) {
    BigDecimal total = order.getItems().stream()
        .map(Item::getPrice)
        .reduce(BigDecimal.ZERO, BigDecimal::add);
    order.setTotal(total);
}

private void saveOrder(Order order) {
    orderRepository.save(order);
}

private void sendConfirmationEmail(Order order) {
    emailService.sendConfirmationEmail(order);
}

Conclusió

Seguint aquests consells, podràs escriure codi net i mantenible en les teves aplicacions Spring Boot. Recorda que la clau és la claredat, la simplicitat i la modularitat. Practica aquestes tècniques regularment i revisa el teu codi per assegurar-te que compleix amb aquests estàndards.

Curs de Spring Boot

Mòdul 1: Introducció a Spring Boot

Mòdul 2: Conceptes bàsics de Spring Boot

Mòdul 3: Construint serveis web RESTful

Mòdul 4: Accés a dades amb Spring Boot

Mòdul 5: Seguretat a Spring Boot

Mòdul 6: Proves a Spring Boot

Mòdul 7: Funcions avançades de Spring Boot

Mòdul 8: Desplegant aplicacions Spring Boot

Mòdul 9: Rendiment i monitorització

Mòdul 10: Millors pràctiques i consells

© Copyright 2024. Tots els drets reservats