Singola istruzione se blocco - parentesi graffe o no? [chiuso]


59

Qual è il migliore / più generalmente accettato?

Questo:

if(condition)
{
  statement;
}

O:

if(condition)
  statement;

Tendo a preferire il primo, perché penso che renda più facile dire che cosa effettivamente appartiene al blocco if, salva gli altri dall'aggiunta delle parentesi graffe in seguito (o dalla creazione di un bug dimenticando di) e rende tutte le tue istruzioni if uniforme invece di alcuni con bretelle e alcuni senza. Il secondo, tuttavia, è ancora sintatticamente corretto e decisamente più compatto. Sono curioso di vedere quale è generalmente più preferito dagli altri però.


2
Ma hai la parentesi graffa di apertura nella posizione sbagliata. Questo è certo.
Christian Mann,

In molte lingue, un blocco è un'istruzione, quindi, sintatticamente, è sempre un'istruzione (expresion)
Ingo,

2
Dato che non hai specificato una lingua ... Che dire statement if condition;?
Dave Sherohman,

@Christian - buono. Sarebbe un'altra domanda separata da questa, no?
Zannjaminderson,

@Ingo - buon punto.
Zannjaminderson,

Risposte:


131

Il primo è migliore perché il secondo è soggetto a errori. Ad esempio, supponiamo che tu stia commentando temporaneamente il codice per eseguire il debug di qualcosa:

if(condition) 
//      statement;
otherStatement;

O aggiungendo il codice in fretta:

if(condition) 
    statement;
    otherStatement;

Questo è ovviamente negativo. D'altra parte, il primo a volte sembra troppo prolisso. Pertanto, preferisco mettere tutto su una riga se è sufficientemente breve e semplice:

if(condition) statement;

Ciò riduce il rumore sintattico mentre fa sembrare il costrutto come se facesse quello che fa effettivamente, rendendolo meno soggetto a errori. Purché questa sintassi sia utilizzata solo per istruzioni e condizioni molto semplici, brevi, la trovo perfettamente leggibile.


35
Un buon punto per mettere tutto su una linea.
Neil Aitken,

7
@artjomka: se l'istruzione è lunga e deve seguire una linea propria, uso parentesi graffe per leggibilità. Il punto è che vuoi il costrutto più breve, meno sintatticamente rumoroso, che non sia ambiguo per un essere umano che lo sta leggendo rapidamente piuttosto che scrutarlo.
dsimcha

15
Preferisco quello con le parentesi graffe per i motivi già citati. Non mi piace il one-liner, perché non è immediatamente ovvio cosa succede quando passo il limite nel debugger. Devo fare il passo separato per vedere a cosa valuta la condizione.
Jim,

10
Lo spazio bianco di @TMN è gratuito, i monitor sono grandi e il tuo cervello impara a riconoscere la forma che ti aiuta ad analizzare il codice.
Murph,

5
@Murph: gli spazi bianchi sono gratuiti? Devo averlo perso. Sul mio schermo, occupa davvero molto spazio. Molto più del 50% in realtà. Che nel mio libro sembra un grande spreco. Personalmente, mi piace massimizzare il contenuto per centimetro quadrato nel codice.
Konrad Rudolph,

44

Uso sempre le parentesi solo per sicurezza.

Va bene quando lo scrivi, ma sai che qualcuno arriverà in futuro e inserirà un'altra dichiarazione senza mettere parentesi.


20
Le persone hanno visto davvero che questo è successo? Non credo di averlo mai visto in 10 anni di programmazione. Forse sono appena stato troppo al riparo. :)
David

9
Mi piacerebbe dire di no, ma purtroppo l'ho visto.
Neil Aitken,

13
Usi sempre le parentesi in modo da non dimenticarti mai di usare le parentesi: è così semplice.
Murph,

12
Da +1 a @Murph. Stesso motivo per cui utilizzo i miei indicatori di direzione quando non c'è nessuno e nei parcheggi!
Dan Ray,

7
Questa è una buona pratica per aiutare a prevenire errori durante l'unione da ramo a tronco o tra rami.
JBR Wilkinson,

27

Preferisco la versione senza parentesi graffe ove possibile.

La seguente spiegazione è lunga. Per favore abbi pazienza. Darò un motivo convincente per preferire questo stile. Spiegherò anche perché penso che la solita controproposta non valga.

Le linee (quasi) vuote sono uno spreco

La ragione di ciò è che la parentesi graffa di chiusura richiede una riga di codice aggiuntiva - e anche la parentesi graffa di apertura, a seconda dello stile. 1

È un grosso problema? Superficialmente, no. Dopotutto, molte persone inseriscono anche righe vuote nel loro codice per separare blocchi leggermente logicamente indipendenti, il che migliora notevolmente la leggibilità.

Tuttavia, detesto sprecare spazio verticale. I monitor moderni hanno in realtà un ampio spazio orizzontale. Ma lo spazio verticale è ancora molto, molto limitato (a meno che non si usi un monitor in posizione verticale, il che non è così raro). Questo spazio verticale limitato è un problema: è ampiamente riconosciuto che i singoli metodi dovrebbero essere il più corti possibile e che le parentesi graffe corrispondenti (o altri delimitatori di blocchi) non dovrebbero essere più di un'altezza dello schermo in differenza in modo da poter vedere l'intero blocco senza scrolling.

Questo è un problema fondamentale : una volta che non riesci più a vedere l'intero blocco sullo schermo, diventa complicato da capire.

Di conseguenza, detesto le righe vuote ridondanti. Dove singole righe vuote sono cruciali per delimitare blocchi indipendenti (basta guardare l'aspetto visivo di questo testo), consecutivi righe vuote sono una molto cattivo stile nel mio libro (e nella mia esperienza sono di solito un segno di programmatori alle prime armi).

Allo stesso modo, dovrebbero essere le linee che semplicemente trattengono un tutore e che potrebbero essere economizzate. Un blocco a istruzione singola che è delimitato da parentesi graffe fa perdere una o due righe. Con solo 50 linee per altezza dello schermo, questo è evidente.

Omettere parentesi graffe forse non fa male

C'è solo un argomento contro l'omissione di parentesi graffe: che qualcuno aggiungerà successivamente un'altra istruzione al blocco in questione e dimenticherà di aggiungere le parentesi graffe, cambiando così inavvertitamente la semantica del codice.

Questo sarebbe davvero un grosso problema.

Ma nella mia esperienza, non lo è. Sono un programmatore sciatto; eppure, nel mio decennio di esperienza di programmazione, posso onestamente dire che non ho mai dimenticato di aggiungere le parentesi quando ho aggiunto un'istruzione in più a un blocco singleton.

Trovo persino plausibile che si tratti di un errore comune: i blocchi sono una parte fondamentale della programmazione. La risoluzione a livello di blocco e l'ambito sono un processo mentale automatico e radicato per i programmatori. Il cervello lo fa (altrimenti, ragionare sulla programmazione sarebbe molto più difficile). Non è necessario un ulteriore sforzo mentale per ricordare di mettere le parentesi graffe: il programmatore ricorda anche di indentare correttamente la nuova dichiarazione aggiunta, dopo tutto; così il programmatore ha già elaborato mentalmente che è coinvolto un blocco.

Ora, io non dicendo che omettendo le parentesi non causa errori. Quello che sto dicendo è che non abbiamo prove in un modo o nell'altro. Semplicemente non sappiamo se provoca danni.

Quindi, finché qualcuno non può mostrarmi dati concreti, raccolti da esperimenti scientifici, che dimostrano che questo è davvero un problema nella pratica, questa teoria rimane una " storia così giusta ": un'ipotesi molto convincente che non è mai stata messa alla prova, e che non deve essere usato come argomento.


1 Questo problema a volte viene risolto mettendo tutto - comprese le parentesi graffe - sulla stessa linea:

if (condition)
{ do_something(); }

Tuttavia, credo sia sicuro affermare che la maggior parte delle persone lo disprezza. Inoltre, avrebbe gli stessi problemi della variante senza parentesi graffe, quindi è il peggiore di entrambi i mondi.


6
L'omissione di parentesi graffe danneggia la leggibilità e può facilmente causare problemi quando si modifica il codice.
Josh K,

15
@Josh: la prima affermazione è ridicola, come mostrano linguaggi come Python (supportalo con prove se pensi diversamente). Il secondo è stato contrastato nella mia risposta. Hai prove a sostegno? In caso contrario, il tuo commento indica che non hai ancora letto il mio testo. Per favore, fallo prima di criticarlo.
Konrad Rudolph,

8
+1 per i tuoi pensieri, ma penso che la tua posizione sia autolesionista. Dici "mostrami dati concreti, raccolti da esperimenti scientifici, dimostrando che questo è davvero un problema nella pratica" e tuttavia fai affidamento sull'esperienza aneddotica (la tua) per difendere la tua posizione. Dici "nella mia esperienza ... nel mio decennio di esperienza ... lo trovo non plausibile ..." e così via. Puoi mostrare dati concreti, raccolti da esperimenti scientifici, a sostegno della tua affermazione, "Omettere le parentesi graffe non fa male"? L'esperienza personale va bene quando si sostiene un'opinione, ma non chiedere più "prove" di quelle che sei disposto a dare.
bedwyr,

3
@bedwyr: c'è una differenza qualitativa, però. Innanzitutto, chiarisco che in realtà sarò persuaso dai dati e chiarisco ugualmente che la mia è solo un'ipotesi, non supportata dai dati. In secondo luogo, ho affermato un'argomentazione plausibile (almeno per me) alla mia convinzione che l'affermazione sia falsa e perché debba essere confermata. Il che mi porta in terzo luogo: l'onere qui è sull'opposizione per dimostrare la loro richiesta, non su di me per confutare. E oltre al problema di plausibilità, ho mostrato un argomento di fatto non correlato a supporto del mio stile di programmazione.
Konrad Rudolph,

4
@Konrad - python non mostra diversamente perché il rientro è significativo e quindi le parentesi graffe sono implicite. Buoni programmatori brillanti, il tipo che sono qui, probabilmente non commetteranno l'errore spesso (in molti anni ho probabilmente avuto problemi con solo un paio di occasioni) ma ci sono molti meno buoni i programmatori che fanno cose stupide, questo è uno dei motivi per cui gli standard di codifica sono necessari in primo luogo. (E poiché le scadenze e lo stress possono rendere meno bene il meglio di noi.)
Murph,

19

Vado con il secondo. È più conciso e meno prolisso.

Cerco di non scrivere con il minimo comune denominatore, quindi mi aspetto che altri sviluppatori sappiano come scrivere una delle strutture di flusso di controllo più comuni nella programmazione odierna.


11
assolutamente! dopo tutto, se il codice fosse difficile da scrivere, dovrebbe essere difficile da mantenere anche! ;-)
Steven A. Lowe,

3
@Steven Se dimentichi le parentesi graffe, penso che ci siano altri problemi qui.
TheLQ

more succint == less verbose
UncleZeiv

5
@SnOrfus: un po 'sarcastico, poiché i 2 caratteri extra sono un banale sovraccarico e prevengono un errore di manutenzione molto comune. Il tuo chilometraggio può variare ;-)
Steven A. Lowe

1
Per me il rientro chiarisce cosa sta succedendo. La prima forma brucia spazio extra sullo schermo e quindi è un aspetto negativo per me.
Loren Pechtel,

16

Vorrei usare il seguente (il consenso qui):

if (condition) {
    any_number_of_statements;
}

Inoltre possibile:

if(condition) single_compact_statement;

Non così buono, specialmente nei linguaggi simili a C / C ++:

if(condition) 
    single_compact_statement;

(Nessuna scelta qui in Python ;-)


In Perl , useresti:

$C = $A**3 if $A != $B;

o

$C = $A**3 unless $A == $B;

(Questo non è pseudocodice ;-)


1
I miei pensieri esattamente. Se la singola istruzione sembra a posto su una sola riga dopo la ifclausola, non uso parentesi graffe. Per qualsiasi altra ifaffermazione (o qualsiasi affermazione che utilizza più righe), utilizzo sempre parentesi graffe. In particolare, se c'è una elseclausola, ogni caso ha sempre parentesi graffe.
eswald,

9
Non ho mai visto nessuno confondere il perl con lo pseudocodice prima d'ora. Caratteri casuali sì, pseudocodice - no.
Joe D,

3
Mi chiedo se qualcuno abbia creato un generatore di programmi Perl semplicemente collegando / dev / random a un interprete Perl ...
Christian Mann,

Mi piace l'approccio di Ruby qui. Offre lo stile a riga singola <statement> if <condition>o uno stile a blocco multilinea if <condition>/ <do something>/ end(il rubino evita le parentesi graffe, quindi qui la parentesi graffa di apertura è implicita ife la parentesi graffa di estremità è sostituita da una lettera end). Non offre nemmeno la strana istruzione if multilinea, ma in realtà solo una riga singola.
Ben Lee,

Il one-liner non funziona con la maggior parte dei debugger (non è possibile attivare un'interruzione quando il contenuto della clausola 'if' sta per essere eseguito).
Peter Mortensen,

11

Uso il metodo delle parentesi graffe - per tutti i motivi sopra e uno in più.

Il codice si fonde. È noto che accada su progetti a cui ho lavorato su quell'istruzione singola se sono stati interrotti da fusioni automatiche. La cosa spaventosa è che il rientro sembra giusto anche se il codice è sbagliato, quindi questo tipo di bug è difficile da individuare.

Quindi vado con le parentesi graffe - sulla loro linea. È più facile individuare i livelli in questo modo. Sì, spreca immobili sullo schermo verticale e questo è un vero inconveniente. A conti fatti però, penso che ne valga la pena.


10

Senza parentesi graffe Se qualche altro programmatore aggiunge una seconda affermazione al mio codice, non è più colpa mia se lasciare che qualcuno guidi la mia auto e vadano oltre una scogliera.


3
Esattamente! Non è colpa nostra se non conosce la sintassi.
kirk.burleson,

3
Cattivo esempio Una buona è un'auto con pedali fuori posto: gas anziché freno. È la tua macchina, quindi non ti importa di nessun altro. C'è un problema che non conoscono il posizionamento unico dei pedali. Sei un buon ingegnere automobilistico in questo caso?
yegor256,

Sarebbe colpa tua se dai loro l'auto sapendo che potrebbero essere ubriachi. Allo stesso modo dovremmo cercare di assumere il meno possibile sui futuri sviluppatori per facilitare la manutenzione.
Aram Kocharyan,

8

Abbiamo discusso questo argomento più di una volta qui e il consenso generale è di usare sempre le parentesi graffe. Le ragioni principali riguardano la leggibilità / manutenibilità.

Se è necessario aggiungere codice al ifblocco, non è necessario ricordare / cercare parentesi graffe. Quando i futuri programmatori leggono il codice, le parentesi graffe sono sempre inequivocabili.

Tra i lati positivi , ReSharper aggiungerà automaticamente le parentesi graffe per programmatori pigri in Visual Studio e suppongo che ci siano componenti aggiuntivi per altri IDE che lo faranno.


3
Non compro categoricamente la richiesta di leggibilità. Python è una delle lingue più leggibili che ci siano e non ha bisogno di delimitatori. Questa affermazione non è vera. Inoltre non compro l'affermazione di manutenibilità perché finora non è stata provata e ancora ripetutamente rinnovata. Ma in questo caso sono davvero molto interessato alle prove empiriche. Questo è qualcosa che uno studio potrebbe facilmente scoprire e risolvere una volta per tutte.
Konrad Rudolph,

Poiché Python utilizza il rientro anziché i delimitatori, sono impliciti che non è un confronto valido.
Murph,

@Konrad - prove empiriche: quando ero un nuovo programmatore ho aggiunto personalmente il codice a un blocco if non rinforzato senza rendermi conto che il programmatore precedente non si era preoccupato delle parentesi graffe. Ho visto personalmente altre persone farlo con i miei occhi. Certo, solo una volta ho visto qualcuno che aveva bisogno di aiuto per trovare il problema dopo aver eseguito il proprio codice, ma ciò aveva più a che fare con cattive capacità di test.
Shimonyk,

@shimonyk: quindi in sostanza le tue osservazioni supportano la mia affermazione che questo problema è irrilevante? A proposito, le osservazioni personali sono aneddoti, non contano come prove empiriche.
Konrad Rudolph,

@Konrad molto bene, per favore cita anche le tue fonti. Presumo che tu abbia fatto uno studio in doppio cieco con revisione paritaria a cui ti riferisci? In caso contrario, che limitarsi a confutare i propri aneddoti nel tentativo di dimostrare che gli altri hanno torto mentre si richiedono altri poster, fare riferimento a "prove" è nella migliore delle ipotesi ipocrita. Come qualcuno più in basso su questo stesso argomento ha scritto "l'onere qui è sull'opposizione per dimostrare la loro richiesta, non su di me per confutare".
Shimonyk,

7

Uso la prima sintassi, quasi senza eccezioni. Perché non può essere frainteso .

"Non farmi pensare" non si applica solo alle interfacce utente, tutti voi ;-)


4
Prima lo facevo, ma sono stato conquistato dall'argomento secondo cui i programmatori devono conoscere la lingua e dovrebbero essere costretti a pensare.
kirk.burleson,

2
Lo considero cortesia comune ... per il mio io futuro.
Steven A. Lowe,

5

Personalmente preferisco il secondo. Il primo sembra brutto, imbarazzante e spreca spazio orizzontale. I problemi principali con il secondo sono le macro e le persone che modificano il codice in un secondo momento sbagliano.

Per questo, dico "non usare le macro". Dico anche "indenta correttamente il tuo dannato codice". Considerando come ogni editor di testo / IDE utilizzato per la programmazione fa automaticamente il rientro, questo non dovrebbe essere così difficile da fare. Quando scrivo il codice in Emacs, vorrei usare il rientro automatico per identificare se ho scritto qualcosa di sbagliato in una riga precedente. Ogni volta che Emacs inizia a rovinare il rientro, di solito so di aver fatto qualcosa di sbagliato.

In pratica, finisco per seguire qualunque convenzione di programmazione sia stata fissata prima di me. Ma questi mi infastidiscono (e mi rendono molto più felice quando scrivo codice in Python e l'intero disastro della parentesi è sparito):

if (condition) {
    statement;
} // stupid extra brace looks ugly

Poi

if (condition) // the brackets have now just become noise
{ statement; } // also can't see the indentation, harder to read

Sebbene onestamente, due affermazioni in un'istruzione if mi infastidiscono molto più di una singola affermazione. Soprattutto perché sono necessarie le parentesi quadre e sembra ancora divertente con solo due istruzioni nell'istruzione if.


Se hai intenzione di scrivere macro, dovresti scriverle per assicurarti che possano essere inserite in qualsiasi parte del codice senza interrompere comunque.
Covar,

4

Uso la versione a due righe senza parentesi graffe (la seconda forma), ma non per risparmiare spazio.

Uso questo modulo perché lo trovo più leggibile, visivamente più accattivante e più facile da scrivere. Uso questo modulo solo se tali condizioni sono soddisfatte; vale a dire che la ifcondizione deve adattarsi perfettamente su una singola riga e l'affermazione corrispondente deve adattarsi perfettamente alla riga seguente. In caso contrario, userò le parentesi graffe per migliorare la leggibilità.

Se utilizzo questo modulo, mi assicuro che sia presente una riga vuota (o una riga contenente solo una parentesi graffa) prima e dopo l' ifistruzione (o sopra il commento, se presente). Sebbene questa non sia una regola che seguo consapevolmente, ora la noto dopo aver letto questa domanda.

Conservare lo schermo non è una priorità per me. Se avessi bisogno di più spazio, utilizzerei un monitor più grande. Il mio schermo è già abbastanza grande da consentirmi di leggere qualsiasi cosa su cui potrei aver bisogno per focalizzare la mia attenzione. È improbabile che avrei bisogno di concentrarmi su così tante righe di codice contemporaneamente che occupano tutto il mio schermo. Se ci sono così tanti annidamenti in corso con un pezzo di codice che non riesco a capirlo senza visualizzarne più contemporaneamente, allora dovrei considerare se la logica potrebbe essere meglio rappresentata dal refactoring.

Di seguito sono riportati alcuni esempi che dimostrano come utilizzo questo modulo di ifdichiarazione.

    string GuardConditions(Plan planForWorldDomination)
    {
        if (planForWorldDomination == null)
            throw new ArgumentNullException("planForWorldDomination");

        if (!planForWorldDomination.IsComplete())
            return "Doh!";

        planForWorldDomination.Execute();
    }

    void ProcessingLogic()
    {
        OneBlankLineAbove();

        if (simpleCondition)
            simpleStatement();

        OneBlankLineBelow();
        OneBlankLineAbove();

        // optional comment on the line above an if statement
        if (simpleCondition)
            simpleStatement();

        OneBlankLineBelow();
    }

    void Assignment(string drive)
    {
        OneBlankLineAbove();

        string prompt;
        if (simpleCondition)
            prompt = "simple assignment";
        else
            prompt = null;

        OneBlankLineBelow();
    }

    string Return()
    {
        OneBlankLineAbove();

        if (simpleCondition)
            return "simple return";
        else
            return null;

        OneBlankLineBelow();
    }

3

Bretelle. Sempre. Sono una specie di fan, perché dà al codice una certa coerenza. E anche come ha scritto @dsimcha - meno possibilità di errori nell'aggiunta di ulteriori righe di codice.

La "bruttezza" delle parentesi graffe attorno a una singola riga di codice è meno dannosa del lavoro aggiuntivo che è probabile in quei casi con debug e / o aggiunta di codice.


1
Non ho mai visto nessuno commettere l'errore di cui stai parlando.
kirk.burleson,

1
L'ho appena fatto ieri con qualcuno che ha scritto un pezzo di codice. :-) Mi chiedo solo come apparirà l'upstream, tra le altre aggiunte al codice, aggiungendo parentesi graffe su tutti i suoi if perché sembra davvero essere diverso da me su questo. :-) (calmati, sto scherzando, ho modificato proprio quello che dovevo ...)
Vedran Krivokuća,

2

Personalmente vado con parentesi.

Perché?

Bene, se qualcuno arriva e ha bisogno di aggiungere codice nell'istruzione if è chiaro al 100% dove si trova l'ambito.

Mantiene ifcoerente il formato delle istruzioni, indipendentemente dal numero di istruzioni presenti nel blocco.

Tuttavia, se lo stile del progetto deve andare senza, attenersi a quello.


1

Uso quasi sempre le parentesi solo per essere al sicuro. Tuttavia, a volte se il contenuto del blocco è davvero breve, lo lascerò fuori e lo trasformerò in un one-liner in questo modo:

if (x==5) Console.WriteLine("It's a five!");

Immagino che qualcuno non sia un fan di brevità.
JohnFx,

2
Brevità per motivi di leggibilità? Assolutamente no. È un codice, non una gara di golf.
Josh K,

3
Penso che la leggibilità sia una grande ragione di brevità, personalmente. In ogni caso: lo spazio bianco non conta nel mio libro delle regole del code-golf.
JohnFx,

L'unico problema è che si presta ad abusi
Conrad Frix,

2
Quindi non abusarne. Non sto dicendo di usarlo come standard di codifica. Ci sono molte volte in cui hai un condizionale molto breve seguito da una singola istruzione davvero breve e questo funziona bene. Ad esempio un if (assert) log.write ("assert failed");
JohnFx,

1

Preferisco le parentesi graffe per coerenza, ma non sprecare troppo spazio bianco (quindi un codice formattato in modo più leggibile è nel mio campo visivo limitato). Quindi scrivo questo per righe abbastanza brevi:

If (cond) { statement; }

Interessante, non vedo davvero codice come questo, ma mi piace un po '.
Thomas Eding,

0

Di solito uso le parentesi graffe, ma ci sono alcuni casi in cui non lo faccio.

object GetObject() {
    // calculate obj1
    if(obj1 != null)
        return obj1;

    // calculate obj2
    if(obj2 != null)
        return obj2;

    // calculate obj3
    if(obj3 != null)
        return obj3;

    return defaultObj;
}

Per me, sarebbe sciocco aggiungerli lì. Se qualcuno aggiunge una dichiarazione dopo il return, abbiamo problemi più grandi rispetto ai problemi di scoping.


Potresti usare altrettanto facilmentereturn (obj != null) ? obj : "Error";
Josh K,


In quel caso userei qualcosa del genere Object returnObj = defaultObj; /* Three else-if's to change it to obj1/2/3 */ return returnObj;.
Josh K,

@Josh, Leggere attentamente stackoverflow.com/questions/36707/... . Primo commento alla prima risposta, "Anche se avere più punti di uscita può sfuggire di mano, penso che sia meglio che mettere l'intera funzione in un blocco IF ".
Nota per se stessi: pensa a un nome il

0

Se l'IDE ha la formattazione del codice disponibile, non uso le parentesi graffe.

D'altra parte, dove il codice può essere modificato in altri editor che non supportano la formattazione automatica, è pericoloso non inserire parentesi graffe come indicato in altri post. Ma anche così preferisco non usare le parentesi graffe e non è stato un problema per me.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.