d@vid
23-01-2007, 09:36
Salve. Vorrei un vostro parere su quale potrebbe essere la logica di un bravo programmatore di fronte ad un certo ventaglio di possibilità.
Mi spiego (l'ambiente specifico cui si riferisce il mio quesito è quello del MatLab, ma ovviamente esporrò il problema in modo generale, perchè a me preme capire la 'logica' del comportamento, che non è necessariamente vincolata ad uno specifico ambiente di lavoro, anzi): c'è un programma principale (main) che chiama vari sottoprogrammi (nella fattispecie 3 o 4 mi sembra :D ). Uno di questi sottoprogrammi produce un oggetto grafico, i cui attributi devono essere diversi a seconda del punto, all'interno del main, in cui vien fatta la chiamata
Per procedere ho individuato due possibilità:
1) il sottoprogramma restituisce, oltre all'output di interesse, anche un puntatore all'oggetto grafico, i cui attributi saranno modificati all'interno del main
2) il main fornisce al sottoprogramma chiamato, oltra ai vari parametri di input di interesse, un ulteriore parametro sulla base del quale, mediante un costrutto switch-case, ilsottoprogramma stesso stabilirà gli attributi dell'oggetto grafico restituito all'atto della chiamata
Le due soluzioni sono sostanzialmente equivalenti dal punto di vista dell'effetto finale, ma diverse nell'esecuzione nonchè nella 'pulizia' del codice (e, non ultimo, nella 'coerenza logica')
Nel primo caso avremo una nuova variabile che il sottoprogramma restituisce al main, il quale, per ogni chiamata, dovrà presentare delle righe di codice aggiuntive per modificare gli attributi di questa variabile:
Vantaggi
-modo semplice e immediato di risolvere la questione
Svantaggi
-'ridondanza' (il main si caricherà di nuove righe di codice, che andranno eseguite dopo ogni chiamata al sottoprogramma)
-'minore velocità di esecuzione' (legata all'aspetto precedente)
-'incoerenza del sottoprogramma' (esso esaurirà solo in parte la sua funzione, dal momento che richiederà sempre, nel programma chiamante, delle righe di codice che, a tal punto, diventano essenzaili per la rappresentazione dell'oggetto grafico - in assenza di tali righe, il sottoprogramma NON fornisce l'oggetto grafico [ma solo un puntatore ad esso])
Nel secondo caso avremo una nuova variabile che il main dovrà passare, all'atto di ciascuna chiamata, al sottoprogramma, il quale, tramite un costrutto switch-case, fisserà poi gli attributi dell'oggetto grafico che fornirà in output:
Vantaggi
-'coerenza' (il sottoprogramma esaurisce la sua funzione nel fornire i parametri di output richiesti, compreso un oggetto grafico finito. Per dire, laddove fosse necessario chiamare lo stesso sottoprogramma da altri programmi, questo avrebbe una sua ragion d'essere indipendente, legata al fatto che le sue mansioni sono ben delineate)
Svantaggi
-a meno di non sovraccaricare il costrurro switch-case, esso risulterà comunque limitato per esaurire tutte le possibili scelte che dovessero presentarsi circa la modifica degli attributi grafici, nonchè queste risulterebbero "prestabilite" nel sottoprogramma
-è necessario passare un'ulteriore variabile al sottoprogramma, all'atto di ogni chiamata
Attendo vostri pareri: voi come fareste e perchè? :)
Mi spiego (l'ambiente specifico cui si riferisce il mio quesito è quello del MatLab, ma ovviamente esporrò il problema in modo generale, perchè a me preme capire la 'logica' del comportamento, che non è necessariamente vincolata ad uno specifico ambiente di lavoro, anzi): c'è un programma principale (main) che chiama vari sottoprogrammi (nella fattispecie 3 o 4 mi sembra :D ). Uno di questi sottoprogrammi produce un oggetto grafico, i cui attributi devono essere diversi a seconda del punto, all'interno del main, in cui vien fatta la chiamata
Per procedere ho individuato due possibilità:
1) il sottoprogramma restituisce, oltre all'output di interesse, anche un puntatore all'oggetto grafico, i cui attributi saranno modificati all'interno del main
2) il main fornisce al sottoprogramma chiamato, oltra ai vari parametri di input di interesse, un ulteriore parametro sulla base del quale, mediante un costrutto switch-case, ilsottoprogramma stesso stabilirà gli attributi dell'oggetto grafico restituito all'atto della chiamata
Le due soluzioni sono sostanzialmente equivalenti dal punto di vista dell'effetto finale, ma diverse nell'esecuzione nonchè nella 'pulizia' del codice (e, non ultimo, nella 'coerenza logica')
Nel primo caso avremo una nuova variabile che il sottoprogramma restituisce al main, il quale, per ogni chiamata, dovrà presentare delle righe di codice aggiuntive per modificare gli attributi di questa variabile:
Vantaggi
-modo semplice e immediato di risolvere la questione
Svantaggi
-'ridondanza' (il main si caricherà di nuove righe di codice, che andranno eseguite dopo ogni chiamata al sottoprogramma)
-'minore velocità di esecuzione' (legata all'aspetto precedente)
-'incoerenza del sottoprogramma' (esso esaurirà solo in parte la sua funzione, dal momento che richiederà sempre, nel programma chiamante, delle righe di codice che, a tal punto, diventano essenzaili per la rappresentazione dell'oggetto grafico - in assenza di tali righe, il sottoprogramma NON fornisce l'oggetto grafico [ma solo un puntatore ad esso])
Nel secondo caso avremo una nuova variabile che il main dovrà passare, all'atto di ciascuna chiamata, al sottoprogramma, il quale, tramite un costrutto switch-case, fisserà poi gli attributi dell'oggetto grafico che fornirà in output:
Vantaggi
-'coerenza' (il sottoprogramma esaurisce la sua funzione nel fornire i parametri di output richiesti, compreso un oggetto grafico finito. Per dire, laddove fosse necessario chiamare lo stesso sottoprogramma da altri programmi, questo avrebbe una sua ragion d'essere indipendente, legata al fatto che le sue mansioni sono ben delineate)
Svantaggi
-a meno di non sovraccaricare il costrurro switch-case, esso risulterà comunque limitato per esaurire tutte le possibili scelte che dovessero presentarsi circa la modifica degli attributi grafici, nonchè queste risulterebbero "prestabilite" nel sottoprogramma
-è necessario passare un'ulteriore variabile al sottoprogramma, all'atto di ogni chiamata
Attendo vostri pareri: voi come fareste e perchè? :)