“Bad Coding/Designing Practices”: Fare uso sfrenato ed esclusivo di codice “procedurale” all’interno di Stored Procedure

Bad Coding/Designing Practices, Ingegneria del Software 0 11

Subject
SQL and Declarative Programming

Bad Practice
Fare uso sfrenato ed esclusivo di codice “procedurale” all’interno di Stored Procedure

Explanation
Utilizzare esclusivamente costrutti procedurali all’interno di Stored Procedure, come ad es. cicli, cursori, ecc.

Problem
L’utilizzo esclusivo di costrutti procedurali (programmazione imperativa) all’interno di Stored Procedure non permette all’engine del nostro Data Base di ottimizzare e scegliere la via migliore per ottenere il risultato desiderato, proprio perchè il nostro codice definisce in maniera procedurale i “passi” da compiere.

Fix
Dove possibile, preferire l’utilizzo del linguaggio SQL all’interno delle Stored Procedure, che è un linguaggio dichiarativo (programmazione dichiarativa), con il quale esprimiamo  “il cosa fare” e non “il come fare”. In questo modo permettiamo all’engine del nostro Data Base di scegliere la via migliore per ottenere il risultato desiderato (dichiarato attraverso gli statement SQL), consentendogli anche di compiere delle ottimizzazioni.  L’approccio dichiarativo permette di ottenere una maggiore “atomicita'” dei costrutti (e, più in generele, migliora l’ “ACID”ità del codice). Non ultimi sono i benefici di tipo prestazionale (in molti casi), ma anche di maggiore leggibilità e modificabilità del nostro codice.

Note
Il tipo di approccio consigliato presuppone una conoscenza “completa” del linguaggio SQL, comprese altre funzioni aggiuntive integrabili negli statement SQL (ad esempio quelle messe a disposizione da Oracle DB), con le quali è possibile ottenere risultati che normalmente richiederebbero del codice procedurale. 

Scope
Linguaggi SQL, PL/SQL, T-SQL e altri linguaggi per scrivere “Stored Procedure”

About the author / 

Salvatore Di Loro

Related Posts

Leave a reply

Your email address will not be published. Required fields are marked *

Twitter @sdiloro

Instagram

Flickr