Prendi il seguente pseudocodice:
CreateInvoiceAndCalculate(ItemsAndQuantities, DispatchAddress, User);
E dì CreateInvoice
come segue:
- Crea una nuova voce in una tabella Fatture appartenente all'Utente specificato da inviare al DispatchAddress specificato.
- Crea una nuova voce in una tabella InvoiceItems per ciascuno degli elementi in ItemsAndQuantities, memorizzando l'oggetto, la quantità e il costo dell'articolo a partire da ora (osservandolo da una tabella articoli)
- Calcola l'importo totale della fattura (ad es. spedizione e imposte) e memorizzalo nella nuova riga Fattura.
A prima vista non si sarebbe in grado di dire se si trattava di un metodo nel codice dell'applicazione o di una stored procedure nel database che è stata esposta come funzione dall'ORM. E in una certa misura non ha molta importanza.
Ora tecnicamente niente di tutto questo è una logica aziendale. Non stai prendendo alcuna decisione, semplicemente eseguendo un calcolo e creando record. Tuttavia, alcuni potrebbero obiettare che, poiché si sta eseguendo un calcolo che riguarda l'azienda (l'importo totale da fatturare), questo non è qualcosa che dovrebbe essere fatto in una stored procedure e dovrebbe invece essere nel codice.
Quindi, per questo specifico esempio, perché sarebbe più appropriato fare l'uno o l'altro? E dove disegna la linea? O conta in modo particolare purché sia sufficientemente ben documentato?