Regola buona programmazione

di il
6 risposte

Regola buona programmazione

Buongiorno a tutti,

ho un dubbio, per un esercizio dato a lezione sto scrivendo una "libreria" che fornisca tipi e funzioni per la gestione di una data e di un ora (so che esiste già, ma l'esercizio è crearla). In questa libreria sto creando delle funzioni che restituiscono i dati, per esempio una funzione nuovaData(int giorno, int mese, int anno); che restituisca una nuova struttura del tipo specificato.

È qui che mi sorge il dubbio, volevo creare una variabile globale per segnalare gli errori ad un ipotetico programmatore che utilizzi la mia libreria, in modo che la funzione sopra scritta ritorni o la struttura oppure, in caso di errore, ritorni la struttura vuota e setti la variabile globale ad un valore (da definire). In modo tale che il programmatore che deve usare questa "libreria" possa controllare quella variabile per conoscere l'esito di tutte le funzioni.

È una tecnica sconsigliata per qualche ragione? oppure è un utilizzo adatto delle variabili globali?


Spero qualcuno possa rispondermi e grazie in anticipo.

6 Risposte

  • Re: Regola buona programmazione

    Evita l'uso delle variabili globali.

    Se si tratta di C ti consiglio passare e restituire le strutture come parametro (con un puntatore a struttura).
    Se si tratta di C++ ci sono le classi...
  • Re: Regola buona programmazione

    Si tratta di C,

    lo farei molto volentieri di passarle come puntatori... solo che il nostro prof non li ha ancora spiegati e non posso usarli anche se mi piange il cuore a passarle così

    quindi per la gestione degli errori esiste un qualche tipo di standard in C?
  • Re: Regola buona programmazione

    Restituire una struttura in C è raro da vedere: se si vuole fare questo si usi un altro linguaggio a più alto livello, C#, Java ...
    Comunque se il tuo prof. vuole così restituisci pure una struttura.
    Siccome il valore di ritorno è uno solo (fosse Python avresti risolto ) puoi tenerti traccia, internamente alla tua libreria, in una variabile globale, l'ultimo errore riscontrato e permettere all'utilizzatore di leggere tale valore tramite un "metodo" stile GetLastError(). Ma rimane una porcheria: dopo ogni chiamata l'utilizzatore deve chiamare GetLastError() per capire se c'è stato un errore oppure no; inoltre così ottieni codice non rientrante, cioè che ti potrebbe dare problemi nel caso venga utilizzato da più thread.
  • Re: Regola buona programmazione

    Ok grazie, in effetti il C non è adatto a queste cose, ma chi sono io per discutere il volere del capo supremo (quello che mi da i voti)? quindi gli ritorno la sua bella struttura allocata sullo stack...

    Grazie mille del consiglio vedrò di trovare un modo intelligente per gestire gli errori
  • Re: Regola buona programmazione

    Un altro modo, se ritorni una struttura, è quella di inserire il codice di errore all'interno della struttura e fornisci allo sviluppatore una macro (#define) che controlla tale campo.
  • Re: Regola buona programmazione

    Queasta è una soluzione a cui non avevo pensato, grazie mille!
Devi accedere o registrarti per scrivere nel forum
6 risposte