Sto avendo una discussione sullo stile del codice, e sta iniziando a sembrare una "questione di gusti". Credo fermamente al contrario, quindi sto scrivendo questo per ottenere la tua opinione e imparare dai tuoi argomenti a favore e contro.
Il problema è quello di nascondere la complessità sostituendo un gruppo di righe di codice con un metodo. Questa discussione non è correlata a funzioni riutilizzabili e sto cercando di rendere l'argomento semplice organizzazione del codice, non per il factoring della funzionalità comune.
Quindi, prendi questo esempio in loose java:
public void purchase(Customer customer, Set<Item> items, Warehouse warehouse){
int credit = customer.getCredit();
int orderPrice;
for(Item item: items){
orderPrice+=items.getPrice();
}
if(orderPrice + customer.getPendingPayments() > customer.getCredit()) {
warehouse.reserveStock(items);
transportCenter.allocateTransport();
customer.bill(items, orderPrice);
}
}
Al contrario di questo:
public boolean isCreditOk(Customer customer, Set<Item> items){
int credit = customer.getCredit();
int orderPrice;
for(Item item: items){
orderPrice+=items.getPrice();
}
return orderPrice + customer.getPendingPayments() > customer.getCredit();
}
public void purchase(Customer customer, Set<Item> items, Warehouse warehouse){
if(isCreditOk(customer, items)){
warehouse.reserveStock(items);
transportCenter.allocateTransport();
customer.bill(items, orderPrice);
}
}
L'intera discussione ora è: avresti creato il metodo isCreditOk
o avresti lasciato se in linea? Quando fai l'uno o l'altro? dipende, in generale, da:
- La lunghezza della funzione da estrarre
- Quante sotto-funzioni e sottofunzioni secondarie èCreditOk finirà con
Ancora una volta, questo non è fatto perché isCreditOk
sarà usato spesso, ma perché rende il codice più facile da leggere (secondo me).
Posso avere i tuoi commenti? Grazie!
Nota: ho trovato questa domanda correlata: Esiste troppe funzioni / metodi privati?