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.
- 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
- 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 } }
- 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ó }
- 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 }
- 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()); } }
- 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 }
- 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
- Què és Spring Boot?
- Configuració del teu entorn de desenvolupament
- Creant la teva primera aplicació Spring Boot
- Entenent l'estructura del projecte Spring Boot
Mòdul 2: Conceptes bàsics de Spring Boot
- Anotacions de Spring Boot
- Injecció de dependències a Spring Boot
- Configuració de Spring Boot
- Propietats de Spring Boot
Mòdul 3: Construint serveis web RESTful
- Introducció als serveis web RESTful
- Creant controladors REST
- Gestionant mètodes HTTP
- Gestió d'excepcions en REST
Mòdul 4: Accés a dades amb Spring Boot
- Introducció a Spring Data JPA
- Configuració de fonts de dades
- Creant entitats JPA
- Utilitzant repositoris de Spring Data
- Mètodes de consulta a Spring Data JPA
Mòdul 5: Seguretat a Spring Boot
- Introducció a Spring Security
- Configuració de Spring Security
- Autenticació i autorització d'usuaris
- Implementant autenticació JWT
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ó
- Optimització del rendiment
- Monitorització amb Spring Boot Actuator
- Utilitzant Prometheus i Grafana
- Gestió de registres i logs