Lo ammetto: sono uno che non bada troppo alle prestazioni, inteso come velocità di esecuzione di un software. Preferisco prediligere altre caratteristiche interne del mio codice, prima fra tutte la leggibilità. Nell'azienda in cui lavoro siamo davvero in tanti, e capita spesso che quello che oggi sto facendo io, domani finirà sotto le mani di qualcun'altro. E naturalmente, può capitare anche il viceversa. Ritengo che il linguaggio SQL sia uno dei linguaggi moderni meno leggibili, ed è quindi importante che le stored-procedure, per esempio, vengano scritte senza particolari ghirigori o tecnicismi che poi solo alcuni sono in grado di capire e di gestire. Anche perchè se no capita che poi arrivi il pinco-pallino di turno (che potrei anche essere io) che si ritrova a dover correggere o modificare una determinata procedura e accadono nell'ordine i seguenti fatti:
- pinco-pallino apre il codice della stored-procedure e se la guarda un po'
- interviene l'ultima persona che ci ha messo mano e la spiega a grandi linee a pinco-pallino infarcendo il discorso con intercalari del tipo...questo pezzo l'ho aggiunto io per evitare che...io non ho fatto questo, c'era già...e così via
- pinco-pallino riscrive il pezzo di codice come vuole lui, magari peggio, magari meglio
Queste logiche sono molto più intuibili e praticabili, secondo me, con C# o altri linguaggi ad alto livello, perchè basta dare nomi di variabili non casuali, dare un nome sensato alle funzioni per ottenere una leggibilità degna di questo nome. Poi, per carità, posso capire che ci siano scenari dove la velocità di esecuzione delle stored-procedure può essere determinante, e allora qui se ne può discutere. Spesso i nostri sistemi devono per forza girare in una finestra temporale ben determinata (per esempio, dalle 2 del mattino fino alle 5), per fare in modo che alle 8, con l'arrivo dei primi impiegati dei nostri clienti, i database contengano già i numeri giusti al posto giusto. Se lo scenario è questo, ripeto, se ne può discutere, però troppe volte sento dire che sono state ottimizzate query/viste/sp solo per il gusto di farlo (passare da 1 minuto a 20 secondi non cambia nulla), quando magari non era necessario, o sarebbe stato possibile solo farlo successivamente.
Tutto questo discorso si applica al tipo di lavoro che faccio io adesso, che è quello descritto nel paragrafo precedente. Quando sviluppo applicazioni per smart-client sono il primo invece che cerca di rendere accettabile la velocità di un prodotto (rispondere agli input, notificare all'utente cosa sta succedendo, interfaccia sempre reattiva), perchè questi può anche essere la fine del mondo, se però per calcolare due numeri ci mette una vita nessuno lo utilizzerà mai. :-(