PDA

Visualizza versione completa : Lo Stile della Programmazione


DavideDave
03-12-2002, 13.02.52
Partiamo con l'indentazione:


if(indentate_il_codice_così)
{
mi_piacete_molto;
}
else if(oppure_così){
non_mi_piacete_mica_tanto;
}
else(lo_indentate_così) così_proprio_per_niente_è_davvero_esagerato;



insomma...

ma cosa ci vuole a fare le cose per bene?

capisco cose del tipo

(parametro = null ? parametro1 = 0 : parametro1 = parametro)

che vabeh permettono di fare le cose in una sola riga

ma il resto....bah...è un casino mettere le mani in un codice fatto così...

che ne dite?

Ciao :)

ekerazha
03-12-2002, 16.53.46
si, ma come è un casino mettere le mani sul codice anche come l'hai indentato tu, perchè se usi molto sottocicli a forza di TAB i comandi ti finiscono a 2 anni luce... infatti io consiglio, invece che col TAB, di indentare le righe facendo 2 spazi.

pholcus
03-12-2002, 18.19.43
Giusto ekerazha..2 spazi vanno bene; mi pare che il tab standrad sia da 4. In molti editor è possibile cambiare il valore del TAB, vedi ultraedit sotto win. Sotto linux, emacs, indenta di 2 spazi; se invece la riga sopra e + spostata verso destra, schiacciando tab sulla riga seguente, questa viene allineata automaticamente.

Comunque io metto la graffa sulla riga dell'IF ovvero:


if (ghghgh) {
quello_che_vuoi;
}
else if (ghghgh) {
quello_che_vuoi;
}


Si risparmi una riga ad ogni if e secondo me è + chiaro.
Certo che poi va a gusti.

Ciao

DavideDave
03-12-2002, 18.27.29
risparmi una riga sì (a che serve poi non lo so)

più chiaro secondo me no...ammetti di avere tanto codice nell'if.. ammetti di avre anche qualche ciclo..ammetti di essere alla fine dell'if (qui ->}<-)

io metto il puntatore del mouse sulla graffa chiusa, e inizio a spostare la rotella del mouse in su...quando trovo una graffa aperta quella è l'inizio dell'if... più semplice da dire che a farsi... ho messo mano a codice fatto così... tra if else for e while stavo diventando scemo...il mio occuperà troppo spazio...ma non è più leggibile a prima vista? ma forse è solo questione di abitudine...

pholcus
03-12-2002, 20.46.18
Secondo me è una questione di abitudine più che altro...

Vedi è proprio per il fatto che hai detto tu che non le metto in colonna; perchè quando metti il mouse sulla graffa e vai in su, se hai tante graffe, e magari te ne dimentichi una, non trovi più quella corrispondente. All'inizio facevo cosi anchio, ora mi trovo meglio come ho detto prima.

Cmnq è solo questione di abitudine.

Ciao

nemesis
03-12-2002, 21.16.41
Io in c indento così, o meglio mi hanno obbligato i profe a indentare così:

if(condizione)
{
corpo_blocco;
}
else if(condizione)
{
blocco;
}
else
{
blocco;
}

in sostanza come il tuo primo esempio anche se a me non piace molto fare così.

Spero che ora si vedi giusto è la seconda volta che lo modifico e non si vede bene!

nemesis
03-12-2002, 21.22.59
Non si vede ancora giusto!!!!!!!!!!!!!!!

cn73
03-12-2002, 22.09.29
Originariamente inviato da nemesis
Non si vede ancora giusto!!!!!!!!!!!!!!!

Devi usare il tag [code]...

cn73
03-12-2002, 22.14.05
Io amo i blocchi di codice del tipo

param = (condizione? valore1 : valore 2) :D


Sono più leggibili di quanto si creda...

O i blocchi try-catch

try{
istruzioni;
}catch(Exception ex){
ex.printStackTrace();
}

LoryOne
03-12-2002, 22.22.09
Personalmente cerco sempre di indentare con 2 massimo 4 spazi.
Se il livello di nidificazione è alto uso solo 2 spazi, altrimenti 4 o più.

Indentare è comunque un'obbligo non una facoltà, soprattutto perchè rende più leggibile il codice, cioè ne identifica maggiormente i blocchi e poi è più facile metterci mano in fase di debug.

Indentiamo sempre, dunque !:)

Sergio Neddi
04-12-2002, 00.12.45
Io indento sempre di 2 spazi altrimenti quando ci sono cose troppo annidate faccio 4 giri di schermo! :p

LoryOne
04-12-2002, 09.04.55
:D :D :D :D

P8257 WebMaster
06-12-2002, 11.19.19
4 spazi per me è lo standard .. e graffe sempre sulla stessa linea, sempre!

Bye :cool:

P.S.: un bel sondaggio tra 2 e 4?

P8257 WebMaster
06-12-2002, 11.24.07
Ah, aggiungo.. che sono uno dei pochi che allinea il branching multiplo in questo modo:



switch (exp)
{

case (case): code
code
break

default: code
break
}




invece di


switch (exp)
{

case (case):
code
code
break

default:
code
break
}




Bye :cool:

DavideDave
06-12-2002, 11.25.46
Originariamente inviato da P8257 WebMaster
4 spazi per me è lo standard .. e graffe sempre sulla stessa linea, sempre!

Bye :cool:

P.S.: un bel sondaggio tra 2 e 4?

(Y)

Crazy Diamond
06-12-2002, 11.33.12
voto per la seconda...
graffe corrispondenti, due spazi, indentazione rigorosa nche con i commenti :)

DavideDave
06-12-2002, 11.49.28
io faccio così:



switch(exp)
{
case(case1):
{
code;
break;
}

case(case2):
{
code;
break;
}

default:
{
code;
}
}



come potete capire sono evidentemente per la tabulazione a 4 spazi...

e non penso che il problema dei tanti cicli innestati sia un problema

perchè a voler ben vedere una buona programmazione strutturata dovrebbe evitare che ogni metodo superi le tot righe:
in pratica invece di fare tanti for e/o while ecc. innestati, bisognerebbe chiamare tanti metodi a sè stanti...

(il mio insegnante di Java diceva che ogni classe non dovrebbe superare le 20 righe di codice :eek: )

Ciao :)

P8257 WebMaster
06-12-2002, 11.53.29
Certo, senza dubbio ..

l'abbandono della programmazione procedurale, oltre a tanti vantaggi, fornisce anche un maggiore snellimento delle strutture di branching e quindi migliora la leggibilità del codice

Nonostante questo .. alcuni costrutti complessi permangono .. e più spazio c'é, più chiara è la lettura, pena un leggero scorrimento orizzontale

Bye :cool:

DavideDave
06-12-2002, 12.00.44
Originariamente inviato da P8257 WebMaster
più spazio c'é, più chiara è la lettura, pena un leggero scorrimento orizzontale

che poi personalmente l'unico problema che ho è la selezione degli statement quando vanno fuori schermo... per il resto... se il codice è fatto bene una riga può anche essere molto lunga ma allo stesso tempo leggibilissima ;) (Y)

Sergio Neddi
06-12-2002, 14.25.52
Originariamente inviato da DavideDave
(il mio insegnante di Java diceva che ogni classe non dovrebbe superare le 20 righe di codice :eek: )


Io invece dico che ogni classe non dovrebbe superare i 20 alunni. :D

DavideDave
06-12-2002, 15.01.49
Originariamente inviato da Sergio Neddi


Io invece dico che ogni classe non dovrebbe superare i 20 alunni. :D

giusto anche questo (Y) :D:D

The_Prof
06-12-2002, 15.39.32
Originariamente inviato da DavideDave
Partiamo con l'indentazione:


if(indentate_il_codice_così)
{
mi_piacete_molto;
}
else if(oppure_così){
non_mi_piacete_mica_tanto;
}
else(lo_indentate_così) così_proprio_per_niente_è_davvero_esagerato;



insomma...

ma cosa ci vuole a fare le cose per bene?

capisco cose del tipo

(parametro = null ? parametro1 = 0 : parametro1 = parametro)

che vabeh permettono di fare le cose in una sola riga

ma il resto....bah...è un casino mettere le mani in un codice fatto così...

che ne dite?

Ciao :)



Hai ragione ma io di solito faccio cosi'


LA 5,=A(TAB) LOAD ADDRESS
CLI 0(5),255 END ??
B * + 10 YES
MVC 0(30,5),0(4) MOVE DATI
LA 5,30(5) STEP TAB
B *-18 BRANCH RICIRCOLO
MMMM EQU *


:D :D

Kleidemos
19-05-2003, 08.28.04
Originariamente inviato da P8257 WebMaster
Ah, aggiungo.. che sono uno dei pochi che allinea il branching multiplo in questo modo


Anche tu lo fai?

Krakatau
19-05-2003, 12.11.35
io personalmente:


if (a=b)
{
da qui in poi tutto
allineato così
}
else
{
if (b=c)
{
da qui in poi tutto
allineato così
}
da qui in poi tutto
allineato così
}

P8257 WebMaster
19-05-2003, 13.43.03
Scusa, fammi capire .. tu allinei la graffa sottostante lo statement alla tabulazione successiva? .. :o ..

tipo:

if(a)
{
codice
}
else
{
codice
}



:confused: .. :o: ..

Bye :cool:

P.S.: per scrivere il codice (anche se fittizio) ed avere gli spazi effettivi, utilizza il tag "CODE"

Krakatau
19-05-2003, 16.27.24
Ok, adesso è allineato...

ed indentato (per Me)

ottengo


Chi
{cosa
ha causato
}



le { all'estremità solo per le funzioni...
perchè il nome va scritto sopra...


void main()
{.....
.....
.....
.....
if (a=b)
{.....
.....
.....
.....
}
else
{.....
.....
.....
.....
}
.....
.....
}

ekerazha
19-05-2003, 16.39.22
Originariamente inviato da DavideDave


che poi personalmente l'unico problema che ho è la selezione degli statement quando vanno fuori schermo... per il resto... se il codice è fatto bene una riga può anche essere molto lunga ma allo stesso tempo leggibilissima ;) (Y)

Si... e poi in fase di debug per andare a trovare eventuali bug ti devi scorrere continuamente la pagina in orizzontale... 2 spazi, oltre che essere lo standard in alcuni ambienti di sviluppo (tipo quelli della Borland) ti permette un colpo d'occhio migliore sul programma, e dunque una gestione più immediata del programma ;)

P8257 WebMaster
19-05-2003, 16.41.59
ah, ok .. allora avevo capito bene ..
lungi da me giudicare .. più che altro è una curiosità quella che ti chiedo: .. che senso hanno allora per te le graffe?

così facendo perdi la visione dei livelli, secondo me ..

es.:

funzione
{
while
{
codice
if(...)
{
codice
if(...)
{
codice
}

}
}

}


per istinto ad esempio (sarà che sono abituato nell'altro modo) .. mi sono confuso subito con la graffa che racchiude il primo if..
dato che la sua chiusura corrisponde come colonna alla lettera "i" del secondo if .. spontaneamente se dovessi cercare di leggere il codice forse impazzirei perchè modificherei il codice dentro alla graffa interna pensando che sia il codice dell'ultimo if ed invece coincide solo come colonna mentre in realtà devo guardare alla graffa ancora più interna... :confused:

Nessuna critica .. posto solo per curiosità..

Bye :cool:

ekerazha
19-05-2003, 18.05.03
non vedo il problema...


funzione
{
while
{
codice
if(...)
{
codice
if(...)
{
codice
}
}
}
}


... indentato tutto con 2 spazi ;)

P8257 WebMaster
19-05-2003, 18.10.00
non riesco a capire perchè certe graffe le allineate alla prima lettera dell'istruzione soprastante .. e altre invece (nel caso di if) all'altezza della parentesi..

Bye :cool:

ekerazha
19-05-2003, 18.13.23
Originariamente inviato da P8257 WebMaster
non riesco a capire perchè certe graffe le allineate alla prima lettera dell'istruzione soprastante .. e altre invece (nel caso di if) all'altezza della parentesi..

Bye :cool:

perchè sono distratto :D fai conto che le graffe dell'IF siano sotto all'IF ;)

ekerazha
19-05-2003, 18.17.29
... più che distratto, io solitamente programmo in Delphi, quindi non sono proprio a mio agio con le graffe (cmq nel ciclo IF le metterei appunto sotto all'IF ;). Per farti un idea del mio stile di programmazione (Delphi in questo caso) ti copio un pezzo di un mio programma...


function GetUserAgent(): string;
var
reg: TRegistry;
browser, framework: string;
begin
reg := TRegistry.Create;
try
// Proviamo ad aprire la chiave dell'user agent di IE...
try
reg.RootKey := HKEY_CURRENT_USER;
reg.OpenKey('Software\Microsoft\Windows\CurrentVer sion\Internet Settings', True);
browser := reg.ReadString('User Agent');

// ... se la lettura avesse avuto qualche problema
except
browser := 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)';
end;

// Work-around per la versione del .NET Framework...
try
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.OpenKey(
'Software\Microsoft\Windows\CurrentVersion\Install er\UserData\S-1-5-18\Products\EEB2F510C51F7F146973745A53A3E092\Insta llProperties',
True);
framework := reg.ReadString('DisplayVersion');
Result := copy(browser, 1, length(browser) - 1) + '; .NET CLR ' + framework + ')';

// ... se la lettura avesse avuto qualche problema
except
Result := browser;
end;

reg.CloseKey;
finally
reg.Free;
end;
end;


... ovviamente il forum ha mandato a capo le linee troppo lunghe ;)

P.S.
Come vedi uso molti commenti, così poi se ci devi mettere le mani hai tutto più chiaro ;)

P8257 WebMaster
19-05-2003, 18.19.42
ahhhh .. ok .. ;)

Bye :cool:

LoryOne
20-05-2003, 09.11.39
Originariamente inviato da ekerazha
... più che distratto, io solitamente programmo in Delphi, quindi non sono proprio a mio agio con le graffe

Dai ekerazha, un po di fantasia, cribbio !!!
Le tue graffe sono i Begin ({) e gli End (}) ;)

ekerazha
21-05-2003, 16.56.22
Originariamente inviato da LoryOne


Dai ekerazha, un po di fantasia, cribbio !!!
Le tue graffe sono i Begin ({) e gli End (}) ;)

Lo so, ma mi ero confuso lo stesso ;)

wilhelm
30-05-2003, 15.09.13
Originariamente inviato da pholcus
Giusto ekerazha..2 spazi vanno bene; mi pare che il tab standrad sia da 4. In molti editor è possibile cambiare il valore del TAB, vedi ultraedit sotto win. Sotto linux, emacs, indenta di 2 spazi; se invece la riga sopra e + spostata verso destra, schiacciando tab sulla riga seguente, questa viene allineata automaticamente.

Comunque io metto la graffa sulla riga dell'IF ovvero:


if (ghghgh) {
quello_che_vuoi;
}
else if (ghghgh) {
quello_che_vuoi;
}


Si risparmi una riga ad ogni if e secondo me è + chiaro.
Certo che poi va a gusti.

Ciao

Anch'io mi trovo bene a fare così.
Con HTML invece preferisco allineare i tag di apertura in verticale con quelli di chiusura (tranne quelli di formattazione del testo e <TD></TD>)...

Deep73
02-06-2003, 23.59.30
clap clap.... molto ordinato eke... uso lo stesso stile in Delphi pure io. Il begin lo metti sotto e identato di 2 posizioni e l'end del blocco alla pari del begin? Se sì 6 proprio (Y).