Recentemente sono stato assunto in un'azienda e mi è stato chiesto di aiutare a scrivere un'API rimasta incompiuta. Non ho ancora molta esperienza, quindi non sono mai troppo sicuro di quali siano le buone pratiche di codifica.
Questa API verrà utilizzata in seguito per creare un'interfaccia Web che mostri informazioni sull'applicazione sviluppata dalla società. Sia l'applicazione che l'API sono scritte in PHP.
L'API è fondamentalmente un singolo file con una grande lista di funzioni (circa 300). Ogni funzione chiama un'altra funzione nell'applicazione. Per ogni funzione viene applicato lo stesso modello:
- Crea l'oggetto contenente la funzione che desidera chiamare.
- Chiama la funzione da questo nuovo oggetto e memorizza il suo risultato.
- Restituisce il risultato.
L'oggetto stesso non viene mai restituito o referenziato. Sembra davvero strano dover creare un oggetto e distruggerlo ogni volta che vuoi fare qualcosa. Rende il design object oriented completamente inutile.
Ho quindi esaminato il codice dell'applicazione. Per riassumere, l'architettura è fatta in questo modo:
-
C'è un "database" di grande classe che si collega al database e fa un sacco di altre cose.
-
Ci sono molte altre classi (circa 40) che sono figli del Database. Fondamentalmente elaborano i dati e creano query SQL per comunicare con il database. Ciascuna di queste classi è correlata a un argomento, ad esempio esiste la classe "Punteggio" che fornisce le funzioni per ottenere o aggiornare il punteggio da alcuni o da tutti gli utenti. Ma nessuna di queste classi ha attributi (eccetto quelli del Database), sono solo usati per comunicare con il database.
Ora capisco la logica dietro questa strana progettazione dell'API. Dal momento che queste classi sono utilizzate solo come strumenti di comunicazione, è sufficiente creare l'oggetto per chiamare una funzione e funzionerà.
Quindi le mie domande sono:
-
Quanto è grave creare un oggetto solo per chiamare una funzione?
-
Se non funziona correttamente, dovrei riprogettare solo l'API o l'applicazione e l'API? E come?