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
