Come dovrei raggruppare queste variabili?

-2

Ho una forma che sarà definita da:

char s_type;
char color;
double height;
double width;

Queste variabili vengono scansionate da una stringa di richiesta inviata al mio server e passate alla mia funzione di stampa, che quindi stampa la forma. Attualmente sono solo variabili locali che si trovano nel mio main() ; tuttavia, mi chiedevo se ci sarebbe stato alcun vantaggio nel creare una struttura contenente queste variabili e quindi passare la struttura alla mia funzione di stampa? o in quale altro modo potrei migliorare la struttura / lo stile del mio programma, passare una struct per riferimento può avere qualche tipo di prestazione se ci sono molte richieste e quindi molte chiamate di funzioni di stampa?

printer(char st, char cr, double ht, double wd);

int main()
{
    // Other main functionality.

    char s_type;
    char color;
    double height;
    double width;

    sscanf (serv_req, "GET /%c/%c/%lf/%lf", &s_type, &color, &height, &width);

    printer(s_type, color, height, width);

    // Other main functionality.

    return 0;
}

Sembrava "più ordinato" se avessi una struttura o qualcosa che non mi lasciava con dichiarazioni nel mezzo di tutto il resto in corso. Sono interessato alla struttura / stile e alle prestazioni.

EDIT: non intendeva inserire la dichiarazione della stampante all'interno di main.

    
posta han42 08.04.2012 - 15:57
fonte

2 risposte

2

Lo stile è piuttosto soggettivo; se l'uso di una struct ti fa sembrare il codice migliore, fallo. A meno che la tua funzione printer() non sia banale, il modo in cui passi i dati (struct o not, per riferimento o non) non creerà una differenza misurabile.

Probabilmente la cosa migliore che potresti fare per il tuo codice sarebbe quella di scomporre le varie parti di main() indicate dai commenti "altra funzionalità principale" in funzioni separate.

    
risposta data 09.04.2012 - 05:25
fonte
1

È possibile utilizzare macro per ottenere qualcosa di simile:

sscanf4(serv_req,"GET /%c/%c/%lf/%lf", typ, col, h, w, char, char, double, double);
printer(typ, col, h, w);

Per quanto riguarda le prestazioni, l'uso delle strutture non farà molta differenza. Puoi ricontrollare che aggiungendo for-loop, eseguendo il ciclo di tutto 10000 volte e chiamando timeGetTime () per misurare il tempo trascorso. Di solito le possibilità di ottimizzare non sono dove pensi che siano.

    
risposta data 08.04.2012 - 16:41
fonte

Leggi altre domande sui tag