Gestione efficace delle variabili nella programmazione non orientata agli oggetti

2

Qual è il metodo migliore per utilizzare e condividere variabili tra funzioni in linguaggi di programmazione non orientati agli oggetti?

Diciamo che uso 10 parametri da DB, ID e 9 altri valori ad esso collegati. Ho bisogno di lavorare con tutti e 10 i parametri in molte funzioni. Posso farlo in un secondo momento:

1. chiama le funzioni solo con l'utilizzo dell'ID e in ogni funzione ottiene gli altri parametri dal DB.

Vantaggio: le variabili locali sono chiaramente visibili, c'è solo un parametro di input per la funzione

Svantaggio: è lento e ci sono le stesse righe per ottenere parametri in ogni funzione, il che rende la funzione più lunga e non così chiara

2. chiama le funzioni con tutti e 10 i parametri

Vantaggio: lavorare con variabili locali, cancellare il codice funzione

Svantaggio: molti parametri di input, ciò che non è bello

3. ottenere parametri come variabili globali una volta e utilizzarle ovunque

Vantaggio: codice più chiaro, funzioni più brevi, elaborazione più rapida

Svantaggio - variabili globali - perdere il controllo su di esse, possibilità di sovrascrittura indesiderata (specialmente quando alcune funzioni dovrebbero cambiare i loro valori)

Forse c'è un altro modo per implementarlo e rendere il programma più pulito e più efficace. Puoi dire qual è il modo migliore per risolvere questo problema?

    
posta srnka 17.10.2012 - 10:16
fonte

1 risposta

4

In breve : la maggior parte delle lingue ha standard o modi per affrontare questo problema esatto e dipenderà dalla lingua, in C - utilizzare una struct ; Non conosco Ash ma potrebbe avere una sorta di struttura dei dati o un modo per raggruppare i dati e utilizzarli.

In termini di metodi che hai delineato:

Call functions only with using ID and in every function get the other parameters from DB.

Il tuo svantaggio è praticamente azzeccato qui, non dovresti chiamare il database più volte durante l'esecuzione del codice perché è lento e dispendioso, recupera i dati una volta e riutilizzalo dove puoi.

Call functions with all 10 parameters

Nel caso in cui la particolare lingua abbia nessun modo possibile di raggruppare i dati insieme per farti passare, allora questa è probabilmente l'opzione migliore. Ti evita l'uso di globals (soprattutto mutabili) che possono essere potenzialmente rovinati da altri processi e rende chiaro da dove provengono i dati. Sebbene ci siano molti parametri di input, se la tua lingua semplicemente non supporta il raggruppamento dei dati, questa è probabilmente la strada da percorrere.

È anche possibile scrivere il codice in modo tale che ciascuna funzione non abbia bisogno di tutte e 10 le variabili, quindi è sufficiente passare quelle necessarie alla funzione e avanzare nel codice in questo modo. Quindi, la funzione principale conosce solo tutti e 10 e si occupa del risultato finale e tu deleghi particolari parti della logica aziendale a metodi più piccoli e più gestibili.

Getting parameters as global variables once and using them everywhere

Come hai detto a tuo svantaggio - questo può diventare rapidamente fuori controllo e se sono mutabili, allora non sai se qualcun altro ha cambiato il valore o lo stato della tua variabile e puoi avere risultati imprevisti in la tua applicazione. Usare le variabili globali è quasi sempre una cattiva idea (ci sono alcune eccezioni).

Sebbene i globals possano sembrare un modo facile e veloce per ottenere qualcosa ora, aggiungendo più funzioni e più funzioni al codice base e il codice aumenta. Diventa più difficile aggiungere funzionalità perché devi iniziare a ricordare cosa sta facendo ogni global e cosa lo sta modificando, in quale stato è attualmente attivo e se la tua nuova funzione / funzione può modificarlo / usarlo in un particolare momento.

    
risposta data 17.10.2012 - 11:04
fonte

Leggi altre domande sui tag