Programmare con stile (2)

misc38.jpg

Eccoci alla seconda puntata della guida Programmare con Stile. Dopo aver analizzato i principi base della formattazione del codice, passiamo all’analisi della gestione delle righe lunghe di codice e del posizionamento delle parentesi. Approfitto per ricordare ai lettori che questa guida è tratta dalle linee guida dello stile di programmazione del kernel Linux, quindi si adatta bene a linguaggi C-like un po’ meno a linguaggi come il python dove la formattazione del codice è parte integrante della grammatica e semantica del linguaggio.

Capitolo 2: Gestire linee e stringhe lunghe

Programmare con stile vuol dire garantire la leggibilità del codice e la sua manutenzione per mezzo di strumenti comunemente disponibili.

Il limite della lunghezza delle linee è di 80 colonne e questo è un limite fortemente obbligatorio.

Dichiarazioni lunghe più di 80 colonne saranno adattate opportunamente su più righe. Le righe spezzate sono sempre sostanzialmente più corte della riga “padre” e sono posizionate sostanzialmente sulla destra. La stessa procedura si applica alle dichiarazioni di funzioni che hanno una lunga lista di argomenti. Anche le stringhe lunghe sono spezzate in stringhe più corte.

if (condition)
        printk(KERN_WARNING "Warning this is a long printk with "
                                        "3 parameters a: %u b: %u "
                                        "c: %u n", a, b, c);
else
        next_statement;

Capitolo 3: posizionare le parentesi

Un’altra particolarità che occorre gestire per aver un buon stile nella programmazione C è il posizionamento delle parentesi. A differenza della scelta della dimensione del carattere “Tab”, qui ci sono alcune ragioni tecniche per scegliere una strategia di posizionamente piuttosto che un’altra. La scelta preferita, comunque, è quella dettata dai profeti Kernighan e Ritchie e, cioè, di aprire la parentesi graffa alla fine della linea e chiuderla all’inizio di una nuova, così come segue:

        if (x is true) {
                we do y
        }

Tuttavia, nella definizione di funzioni c’è un comportamento speciale: la parentesi graffa viene aperta all’inizio della riga successiva, così:

        int function(int x)
        {
                body of function
        }

Varie persone eretiche in tutto il mondo hanno sostenuto che questa incoerenza è … come dire … incoerente, ma tutte le persone ragionevoli sanno che:

a) K&R hanno ragione
b) K&R hanno ragione

Inoltre, le funzioni sono comunque particolari (non puoi annidarle in C).

Nota che la parentesi graffa chiusa si trova da sola in una nuova riga, fatta eccezione per i casi dove la riga continua con altre dichiarazioni, ad esempio in un “while” con il “do” o in un “else” con un “if”, come questo:

        do {
                body of do-loop
        } while (condition);

e

        if (x == y) {
                ..
        } else if (x > y) {
                ...
        } else {
                ....
        }

Spiegazione razionale: K&R.

Oltretutto, nota che questa modalità di posizionamento delle parentesi minimizza il numero delle righe vuote (o quasi vuote), senza nessuna perdita in leggibilità. Quindi, siccome la fonte di nuove linee nel tuo schermo non è una risorsa rinnovabile (pensa ad un terminale 25 linee), hai più linee vuote per inserire dei commenti.

 

Anche questa puntata è giunta al termine, nella prossima vedremo come scegliere in maniera adeguata i nomi e come scrivere funzioni eleganti.

Parte 1 | Parte 3

11 pensieri su “Programmare con stile (2)

  1. Il K&R mi ha fatto ritornare indietro di 20 anni.
    Sono contento che ancora rimangono un punto di riferimento per voi “giovani”🙂
    Complimenti anche per il blog divulgativo.

  2. Pingback: Top Posts « WordPress.com

  3. Complimenti !

    Ti ammiro molto e a dire la verità anch’io stavo pensando di fare la stessa cosa con Python nel mio blog🙂

    Purtroppo di C non so nulla.

    Bravo comunque per l’iniziativa.🙂

  4. Una curiosità: ma le pagine “in bianco” sono quelle che si trovano nel libro, oppure le “riassumi” e spieghi tu ?
    🙂

  5. Il limite di 80 righe è tanto fondamentale quando difficile da rispettare, non sono solo le stringhe ad eccedere (mamma mia i programmatori di PHP staranno piangendo).
    Penso ad esempio alle query in PHP nel terzo livello quindi che iniziano a 40 caratteri (1 identazione

  6. Ops mi ha tagliato il commento, riprendendo:
    1 identazione php + 3 * tab) quindi le query partono da 40 caratteri, suddividerle provoca una difficile lettura”.
    Per le parentesi ci sono, riporto sempre la prima sopra così il codice è + compatto.
    Ottimo lavoro Simone

  7. io ODIO le parentesi aperte e chiuse non allineate. per un semplice motivo:

    while( x>VAR1 || y>WE ){
    if(jumbo==iluvatar){
    for(i=0;i>8;i++){
    for(j=0; j>9;j++){
    printf(“%ld “, vet[i][j];
    if(jumbo

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...