Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

[C] curiosità sulla posizione delle parentesi graffe

Linguaggi e sistemi

Moderatori: Foto UtentePaolino, Foto Utentefairyvilje

0
voti

[1] [C] curiosità sulla posizione delle parentesi graffe

Messaggioda Foto UtenteTardoFreak » 17 dic 2011, 2:45

Un saluto a tutti i partecipanti.

Prima di programmare in C ho imparato e lavorato molto con il pascal dove i blocchi vengono definiti ed allineati in un certo modo e questo motivo in C scrivo i blocchi così, che mi sembra un modo logico di scriverli.
Codice: Seleziona tutto
if (a==1)
{
  // esegue se a è uguale a 1
}
else
{
  // esegue se a è diverso da 1
}

Come da oggetto sono curioso di sapere per quale motivo (perché ci deve essere per forza un motivo pratico) oggi le parentesi graffe nel C vengono usate in questo modo:
Codice: Seleziona tutto
if (a==1) {
   // esegue se a è uguale a 1
   }
else {
   // esegue se a è diverso da 1
   }

Mi piacerebbe sapere anche chi ha introdotto questo modo di scrivere i programmi.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[2] Re: [C] curiosità sulla posizione delle parentesi graffe

Messaggioda Foto Utentecrestus » 17 dic 2011, 3:49

personalmente è una preferenza di raggruppamento (visivo) di codice.

preferisco avere linee di codice non separate... e separare con una linea vuota parti di codice che fanno cose differenti. Lasciare una linea vuota (perché è così che la vedo io) con solo una graffa dentro disperde il codice...che oltretutto mi costringe a scorrere la pagina molto di più...
...:::Pivello allo sbaraglio:::...

MY WEBSITE! come and see... ;) <-- Di nuovo online... spiacente per i problemi tecnici!
Avatar utente
Foto Utentecrestus
1.295 2 7 13
Expert EY
Expert EY
 
Messaggi: 478
Iscritto il: 3 ott 2008, 10:28
Località: studente al politecnico di torino

0
voti

[3] Re: [C] curiosità sulla posizione delle parentesi graffe

Messaggioda Foto Utentesimo85 » 17 dic 2011, 4:25

È una questione di gusto. La indentazione da te scelta è quella che preferisco, l'altra mi incasina la vita, e la odio, ossia la seconda...
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

0
voti

[4] Re: [C] curiosità sulla posizione delle parentesi graffe

Messaggioda Foto UtenteTardoFreak » 17 dic 2011, 8:29

L' ho domandato perché circa 15 anni fa (se non vado errato) la GNU (o la FSF?) suggerì, anzi lo impose come regola, un sistema d' indentazione per la stesura dei sorgenti in C di questo tipo (i punti li ho messi altrimenti mi elimina gli spazi iniziali):
Codice: Seleziona tutto
. if (a==1)
.   {
.     // esegue se a è uguale a 1
.     b = 2;
.   }
. else
.   {
.     // esegue se a è diverso da 1
.     b = 3;
.   }

che è ancora più bizzarro. Due spazi dalla "if" e poi la parentesi graffa ed all' interno del blocco altri due spazi. :?
Quindi mi chiedevo se nuova la posizione delle graffe che ho illustrato nel primo esempio fosse stata suggerita o imposta da qualcuno.

Mah!
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[5] Re: [C] curiosità sulla posizione delle parentesi graffe

Messaggioda Foto Utentealev » 17 dic 2011, 8:35

Le parentesi graffe vengono usate anche in altri linguaggi tra cui varie shell di unix.
Sono d'accordo con Foto Utentecrestus e [user]gohan[/user] che sia una questione di gusti, io addirittura la preferisco così

Codice: Seleziona tutto
if (a==1)
      {
       // esegue se a è uguale a 1
       }
    else
      {
       // esegue se a è diverso da 1
       }
endif


per la ragione che, avendo vari livelli annidati di parentesi, è più facile vedere se sono aperte/chiuse correttamente.
Ultima modifica di Foto Utentealev il 17 dic 2011, 13:01, modificato 1 volta in totale.
Motivazione: Corretti errori ortografia
Avatar utente
Foto Utentealev
5.993 2 9 12
free expert
 
Messaggi: 6281
Iscritto il: 19 lug 2010, 14:38
Località: Altrove

0
voti

[6] Re: [C] curiosità sulla posizione delle parentesi graffe

Messaggioda Foto UtenteTardoFreak » 17 dic 2011, 8:40

Sono d' accordo, io uso tabulazioni a 2 spazi ma proprio non riesco a capire il senso della graffa di inizio blocco sulla stessa linea della "if" e la graffa di chiusura isolata. Di sicuro è un mio limite ma mi crea confusione.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[7] Re: [C] curiosità sulla posizione delle parentesi graffe

Messaggioda Foto Utenteangus » 17 dic 2011, 11:18

Per quanto mi riguarda utilizzo questo sistema di indentazione:

Codice: Seleziona tutto
if (a == 1) {
    b = 2;
} else {
    b = 0;
}


lo trovo più compatto e riesco a vedere bene gli annidamenti e c'è coerenza tra i "blocchi" di codice.
Altro esempio:
Codice: Seleziona tutto
if (a == 1) {
    b = 2;
    if (c == 0) {
        if (d == 10) {
            if (e == 9) {
                ey = 42;
            }
        }
    }
} else {
    b = 0;
}


Programmando molto più in Python (dove l'indentazione è OBBLIGATORIA) che in C, il mio editor segue le raccomandazioni del PEP-8, quindi, per esempio, 4 spazi per ogni livello di indentazione e righe lunghe al massimo 79 caratteri e uno spazio "intorno" agli operatori logici o artimetici.
in /dev/null no one can hear you scream
Avatar utente
Foto Utenteangus
8.475 4 6 9
G.Master EY
G.Master EY
 
Messaggi: 4168
Iscritto il: 20 giu 2008, 17:25

0
voti

[8] Re: [C] curiosità sulla posizione delle parentesi graffe

Messaggioda Foto Utentesimo85 » 17 dic 2011, 13:35

Su Linux and company c'è la tool indent per la identazione automatica. Ma io uso sempre una tabulazione di 3 e la graffa sempre a capo e tutte in linea tra loro..
Ossia la prima usata da Foto UtenteTardoFreak nel primo messaggio :ok:
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

0
voti

[9] Re: [C] curiosità sulla posizione delle parentesi graffe

Messaggioda Foto UtentePaolino » 17 dic 2011, 17:23

Prima utilizzavo questo modo:
Codice: Seleziona tutto
    if (a == 1) {
        b = 2;
        if (c == 0) {
            if (d == 10) {
                if (e == 9) {
                    ey = 42;
                }
            }
        }
    } else {
        b = 0;
    }


Poi, circa cinque anni fa, a seguito di una necessità di uniformare la stesura del codice nel mio gruppo di programmatori, sono passato a questo modo:
Codice: Seleziona tutto
   if (a == 1)
   {
      b = 2;
      if (c == 0)
      {
         if (d == 10)
         {
            if (e == 9)
            {
               ey = 42;
            }
         }
      }
   } else {
      b = 0;
   }

Personalmente, preferisco il secondo metodo: l'allineamento tra le parentesi {} mi aiuta a vedere immediatamente i blocchi.

Ciao.

Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong

-------------------------------------------------------------

PIC Experience - http://www.picexperience.it
Avatar utente
Foto UtentePaolino
32,6k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4226
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

0
voti

[10] Re: [C] curiosità sulla posizione delle parentesi graffe

Messaggioda Foto UtenteDarwinNE » 17 dic 2011, 19:33

angus ha scritto:Per quanto mi riguarda utilizzo questo sistema di indentazione:


Utilizzo, in C, C++ e Java, esattamente lo stesso modo di indentare descritto da Foto Utenteangus. L'unica eccezione è che quando inizio una funzione metto la graffa subito a capo.
Ecco un pezzo del codice di FidoCadJ:

Codice: Seleziona tutto
    /** Draw the handles of all selected primitives
        @param G the graphic context to be used.
    */
    public void drawSelectedHandles(Graphics2D G, MapCoordinates cs)
    {
        int i;
        for (i=0; i<primitiveVector.size(); ++i){
            if(((GraphicPrimitive)primitiveVector.get(i)).getSelected())
                ((GraphicPrimitive)primitiveVector.get(i)).drawHandles(G,
                   cs);
        }     
    }


Semmai la cosa dovesse invogliare qualcuno, ecco un pezzo del README associato ai sorgenti di FidoCadJ, in cui ho specificato lo stile da adottare:

Codice: Seleziona tutto
3.4 Coding conventions
----------------------

The following coding conventions have been applied for the FidoCadJ source
code:

- tab set to 4 spaces
- blocks delimited by curly braces are indented as follows:

    for(i=0; i<10; ++i) {   // starting brace here
        // indented code (4 spaces)
        System.out.println("I counted up to "+i);
    }   // close brace here at the same level of the 'if'
   
- methods are indented as follows:

    void dummy (int i, int j)
    {   // put the starting brace here
        System.out.println("Indent code");
    }   // put the closing brace here

- the class names always start with a capital letter, and so does methods
- variables never start with a capital letter
- an instance of the class does have its first letter in lower case
- each public class and method should be documented with Javadoc syntax
- no lines longer than 80 characters
- commits should not break the build
Follow me on Mastodon: @davbucci@mastodon.sdf.org
Avatar utente
Foto UtenteDarwinNE
31,0k 7 11 13
G.Master EY
G.Master EY
 
Messaggi: 4420
Iscritto il: 18 apr 2010, 9:32
Località: Grenoble - France

Prossimo

Torna a PC e informatica

Chi c’è in linea

Visitano il forum: Nessuno e 8 ospiti