Entra

View Full Version : Regole di buona programmazione


-Ivan-
20-10-2005, 17:04
E' un po' che ho il seguente dubbio ma non avevo mai pensato di chiederlo qua:
mi ricordo che alle superiori il mio prof di informatica mi aveva detto che è bene non utilizzare per i nomi delle variabili l'underscore, ho visto però in giro su internet ed anche usato da alcuni professori l'utilizzo di questo carattere per separare nomi di variabili composte da due nomi.
Mi sapete dire qual'è il modo "giusto" di operare?
Es:
vettore_caratteri[10];
oppure
VettoreCaratteri[10];

Giakino
20-10-2005, 17:28
Per come sono abituato io:
Variabili: questaEUnaVariabile
Metodi: questoEUnMetodo()

prima lettera minuscola, le seguenti di altre parole maiuscole, senza underscore

Classi: MiaClasse

Prima lettera e lettere delle singole parole maiuscole, niente underscore

Costanti: QUESTA_E_UNA_COSTANTE

tutto maiuscolo, parole separate da underscore...

Così è come faccio di solito.. ;)


ah, il mio prof dice sempre di usare il metodo 333.. RisUltNum al posto di es risultatoUltimoNumero... sempre odiato il suo modo, infatti faccio di testa mia :Prrr:

-Ivan-
20-10-2005, 17:34
Per come sono abituato io:
Variabili: questaEUnaVariabile
Metodi: questoEUnMetodo()

prima lettera minuscola, le seguenti di altre parole maiuscole, senza underscore

Classi: MiaClasse

Prima lettera e lettere delle singole parole maiuscole, niente underscore

Costanti: QUESTA_E_UNA_COSTANTE

tutto maiuscolo, parole separate da underscore...

Così è come faccio di solito.. ;)


ah, il mio prof dice sempre di usare il metodo 333.. RisUltNum al posto di es risultatoUltimoNumero... sempre odiato il suo modo, infatti faccio di testa mia :Prrr:


Il mio prof mi aveva parlato del metodo spiegato dai Signori della Microsoft :read: :D in un apposito manuale di programmazione che spiegava le regole generali da rispettare, nessuno ne sa niente?

cionci
20-10-2005, 20:25
Dipende da quello che si fa...
IMHO meglio sempre scrivere tutto per esteso con la prima lettera minuscola...
Molto spesso c'è anche la versione con l'underscore, ma si usa più spesso nelle funzioni...
Certe volte si usa l'underscore in testa per le variabili private delle classi...
ah, il mio prof dice sempre di usare il metodo 333.. RisUltNum
Ecco...questa secondo me è la peggiore di tutti... Con l'evoluzione degli attuali ambienti di sviluppo scrivere in questo modo si perde solo in leggibilità e non si guadagna niente in velocità di scrittura (c'è il completamento automatico)...

cionci
20-10-2005, 20:34
Il mio prof mi aveva parlato del metodo spiegato dai Signori della Microsoft :read: :D in un apposito manuale di programmazione che spiegava le regole generali da rispettare, nessuno ne sa niente?
http://web.umr.edu/~cpp/common/hungarian.html
La notazione ungherese... Orrida secondo me...

-Ivan-
20-10-2005, 20:48
http://web.umr.edu/~cpp/common/hungarian.html
La notazione ungherese... Orrida secondo me...

mmm a me invece ti dirò che non dispiace, comunque sento direttamente con il mio professore dell'università così evito problemi.
Grazie a tutti cmq.
Se qualcuno ha altro da aggiungere mi piacerebbe continuare la discussione.

cionci
20-10-2005, 20:51
Comunque anche io sono in linea con Giakino...usiamo lo stesso naming...

Giakino
20-10-2005, 21:48
Ecco...questa secondo me è la peggiore di tutti... Con l'evoluzione degli attuali ambienti di sviluppo scrivere in questo modo si perde solo in leggibilità e non si guadagna niente in velocità di scrittura (c'è il completamento automatico)...

D'accordo, soprattutto per la leggibilità, per il fatto della velocità in scrittura anche senza completamento automatico preferisco capire subito cosa vuol dire una variabile anche se ci perdo 1 secondo in più per scriverla. Però non lo vuole capire..pensa che costringe a usare visual basic 6.0 quando c'è disponibile(installato tutto in regola) senza problemi la versione .NET...tanto ormai con me s'è arreso, faccio come voglio io (vedi nomi e linguaggio, anche se personalmente il vb lo eliminerei, però meglio vb.net che vb 6 a questo punto)

La differenza è che forse (anzi, sicuramente) tu hai mooolta più esperienza di me, che in pratica ho appena iniziato

Sempre riguardo alla buona programmazione, al posto del codice, riguardo all'inizio cosa dite? cioè, partite direttamente a scrivere codice di quello che avete in testa oppure prima tutto su carta e poi codice (prof style :read: ) oppure in parte codice (cose semplici) e poi i vari ragionamenti su carta delle cose più complicate (io ora faccio così). Si accettano anche altri pareri (UML, XP, pattern, etc etc :rolleyes: )

Riguardo la notazione ungherese, l'ho usata poche volte e sinceramente non m'ispira, anche perchè comunque alcuni ambienti di sviluppo (eclipse, visual studio 2003) basta passare col mouse su ciò che interessa e dice subito il tipo

-Ivan-
20-10-2005, 22:21
per la stesura dell'algoritmo in genere dipende dalla complessità del programma.
Se è una cosa abbastanza corposa come mi è capitato di fare l'anno scorso che ho dovuto fare un programma su cui ho lavorato circa 3 mesi, prima di tutto penso a grandi linee quello che deve venir fuori e magari su carta penso ad una risoluzione di quelli che penso possano essere i problemi più grossi, poi mi metto a scrivere codice e man mano che proseguo torno sulla carta per risolvere le questioni sulle quali mi devo fermare a pensare di più.
Se il programma è piccolo e semplice passo direttamente a scrivere codice.

Per quanto riguarda la sintassi di scrittura per i nomi variabili, funzioni ecc. pensavo ci fossero degli standard, magari non uno solo ma almeno dei modelli riconosciuti.

cdimauro
21-10-2005, 09:18
Però non lo vuole capire..pensa che costringe a usare visual basic 6.0 quando c'è disponibile(installato tutto in regola) senza problemi la versione .NET...tanto ormai con me s'è arreso, faccio come voglio io (vedi nomi e linguaggio, anche se personalmente il vb lo eliminerei, però meglio vb.net che vb 6 a questo punto)
E fai bene: è il tipico "professore" che ha imparato una cosa, conosce solo quella, e ha paura che al minimo cambiamento non saprebbe dove sbattere la testa. Insomma, di quelli che rovinano i ragazzi. :muro:
Riguardo la notazione ungherese, l'ho usata poche volte e sinceramente non m'ispira, anche perchè comunque alcuni ambienti di sviluppo (eclipse, visual studio 2003) basta passare col mouse su ciò che interessa e dice subito il tipo
De gustibus: lo stile è una questione personale. A me, ad esempio, piace la notazione ungherese, e lavorando con Delphi (Pascal) la uso spesso.

recoil
21-10-2005, 09:46
se devo modificare codice a di un progetto esistente mi uniformo a quanto è già presente

in genere chiamo una variabile per esteto lasciando in minuscolo la prima prima parola. uso l'underscore per le costanti e ultimamente anche per le struct, poi rimuovo _ quando uso il typedef. questo per uniformarmi al simulatore che sto usando, altrimenti la differenza tra il nome della struttura e quello del tipo differisce per str alla fine :)

71104
21-10-2005, 11:33
E fai bene: è il tipico "professore" che ha imparato una cosa, conosce solo quella, e ha paura che al minimo cambiamento non saprebbe dove sbattere la testa. Insomma, di quelli che rovinano i ragazzi. :muro: poverino, che colpa ne ha lui, lui fa così solo perché da ragazzo è stato a sua volta rovinato da un altro "professore". :rolleyes:

end.is.forever
21-10-2005, 15:01
Io odio la notazione ungherese.
Secondo me il nome di un campo o di un metodo deve servire solo a ricordare (o fare capire brevemente) il suo ruolo, non il tipo, la visibilità o tutte quelle informazioni che sono già esplicitate dalla dichiarazione.

Giakino
21-10-2005, 21:33
E fai bene: è il tipico "professore" che ha imparato una cosa, conosce solo quella, e ha paura che al minimo cambiamento non saprebbe dove sbattere la testa. Insomma, di quelli che rovinano i ragazzi. :muro:




Infatti l'ultima volta mi ha detto direttamente: "Fai come vuoi, ma se hai problemi...ti arrangi, non venire a lamentarti da me"
Tanto per quello che si fa (cose troppo banali imho, poi tutto esclusivamente tramite visuale...cose che anche il salumiere con un corso comprato in edicola per 5 eu riesce a fare. Anche se tanto mi rifiuterei comunque di impararmi VB.NET bene. Piuttosto punto ad altro, come sto facendo ora che faccio per i fatti miei qualcosa di java)
La cosa stupenda è l'assistente di laboratorio, in teoria una persona che comunque dovrebbe sapere qualcosa...bè, se non funziona qualcosa prima controlla un pacco di fogli con gli esercizi fatti (uguali) gli anni passati, e se non trova nulla, dice di arrangiarsi...che "professori" e "serietà"... :doh:
Quest ultimo poi lo metto sempre in crisi (per via del .net) :D che poi l'altro giorno è stato troppo bello, mi aveva detto che sarebbe stato bello fare qualcosa che cerca tutti i file in una cartella specifica e li mostra da selezionare tramite una combobox...possibile che non sapeva come cercare tutti i file presenti in una cartella, alla fine non è una cosa che si usa tutti i giorni (penso, e comunque parliamo di "scuola")...MA CHE UN PROFESSORE MI VIENE A DIRE CHE NON E' CAPACE DI CARICARE DELLE VOCI IN UNA COMBOBOX (chiedendo inoltre aiuto all'altro, che nemmeno lui lo sapeva), QUESTO NO... :doh: :doh: :doh:
Alla fine...mi sono arrangiato e dopo poco andava tutto...altro che scuola e professori, meglio fare da soli che si risparmia tempo e s'impara molto di più, poi se non si capisce qualcosa...esiste sempre internet...

cdimauro
24-10-2005, 14:21
poverino, che colpa ne ha lui, lui fa così solo perché da ragazzo è stato a sua volta rovinato da un altro "professore". :rolleyes:
Difficile crederlo, quando buona parte di questi "professori d'informatica" (o sistemi) non sono altro che docenti di matematica, fisica, ecc. che hanno fatto il classico corso d'aggiornamento professionale e sono stati "folgorati sulla via di Damasco" (leggi: sono diventati programmatori tutto in una volta).

Sono talmente convinti e pieni di sé che non riescono a vedere oltre il loro di ragionare. Spesso per loro il programma corretto è quello che è stato fatto per come lo hanno pensato loro: non esistono soluzioni diverse, ma perfettamente lecite, allo stesso problema. Non esiste stile di programmazione diverso dal loro.

Giusto per farti ridere un po'. Un "prof." che ancora esercita fa usare

if condizione then begin
end;
if negazione della condizione then begin
end;

al posto del classico:

if condizione then begin
end
else begin
end;

"Perchè si deve imparare la logica che sta alla base degli IF, prima di passare a strumenti più avanzati come l'ELSE". :rolleyes:

Non solo. Questa:

program prova;
var
i: Integer;
procedure pippo;
var
pluto: real;
begin
pluto := 0.0;
end;
{MAIN CODE}
begin
i := 0;
end.

è l'indentazione che usa e impone ai suoi studenti. Direi che si commenta da sé... :asd: :D :( :muro:

Te ne potrei raccontare tante altre, anche di altri docenti di cui mi è capitato di avere dei ragazzi a ripetizione.

E' grazie a "professori" come questi che escono ormai tantissimi diplomati in informatica, ma che ne capiscono ben poco di informatica. :muro:

cdimauro
24-10-2005, 14:22
Io odio la notazione ungherese.
Secondo me il nome di un campo o di un metodo deve servire solo a ricordare (o fare capire brevemente) il suo ruolo, non il tipo, la visibilità o tutte quelle informazioni che sono già esplicitate dalla dichiarazione.
De gustibus. :p

cdimauro
24-10-2005, 14:25
La cosa stupenda è l'assistente di laboratorio, in teoria una persona che comunque dovrebbe sapere qualcosa...bè, se non funziona qualcosa prima controlla un pacco di fogli con gli esercizi fatti (uguali) gli anni passati, e se non trova nulla, dice di arrangiarsi...che "professori" e "serietà"... :doh:
La cosa simpatica è che qualche volta ho beccato degli assistenti che ne sapevano molto di più dei professori, e che sapevano anche programmare. Merce rara. :p
Alla fine...mi sono arrangiato e dopo poco andava tutto...altro che scuola e professori, meglio fare da soli che si risparmia tempo e s'impara molto di più, poi se non si capisce qualcosa...esiste sempre internet...
Molto meglio, col basso livello culturale che oggi hanno i professori (gli assistenti alla fine tutte le colpe non hanno, per quello che sono tenuti a fare).

fek
24-10-2005, 14:32
Io odio la notazione ungherese.
Secondo me il nome di un campo o di un metodo deve servire solo a ricordare (o fare capire brevemente) il suo ruolo, non il tipo, la visibilità o tutte quelle informazioni che sono già esplicitate dalla dichiarazione.

La notazione ungherese ha senso in C che e' un linguaggio non fortemente tipizzato.

In tutti gli altri linguaggi (come C++/Java/C#) fortemente tipizzati, oltre ad essere inutile, la notazione ungherese e' anche deleteria perche' offusca il codice e il significato delle variabili.


Riferimenti:
http://www.fmsinc.com/dotnet/analyzer/Rules/Hungarian.htm
http://discuss.fogcreek.com/dotnetquestions/default.asp?cmd=show&ixPost=1310
http://foldoc.doc.ic.ac.uk/foldoc/foldoc.cgi?Hungarian+Notation

mpattera
24-10-2005, 14:33
Il mio prof mi aveva parlato del metodo spiegato dai Signori della Microsoft :read: :D in un apposito manuale di programmazione che spiegava le regole generali da rispettare, nessuno ne sa niente?

è la notazione ungara.. http://it.wikipedia.org/wiki/Notazione_ungara


La cosa simpatica è che qualche volta ho beccato degli assistenti che ne sapevano molto di più dei professori, e che sapevano anche programmare. Merce rara.
questo perchè sono quasi tutti dei diplomati al liceo scientifico e laureati in matematica..esclusi quelli che lavorano nel campo della programmazione al di fuori dalla scuola, un perito informatico che fa da assistente di laboratorio sa programmare molto meglio di loro.

jappilas
24-10-2005, 14:58
Questa (snipped code) è l'indentazione che usa e impone ai suoi studenti. ...

inquietante... :eek:

Giakino
24-10-2005, 18:04
Se un professore m'imponesse un'indentazione simile gli sputerei in un occhio senza pensarci molto... :mad:

VICIUS
24-10-2005, 19:43
program prova;
var
i: Integer;
procedure pippo;
var
pluto: real;
begin
pluto := 0.0;
end;
{MAIN CODE}
begin
i := 0;
end.

Spaventoso e geniale allo stesso tempo. Un metodo garantito per impedire a suoi studenti di potergli fregare il posto un giorno. Con un professore cosi si perde del tutto la voglia di lavorare in questo campo.

ciao ;)

cdimauro
25-10-2005, 10:14
questo perchè sono quasi tutti dei diplomati al liceo scientifico e laureati in matematica..esclusi quelli che lavorano nel campo della programmazione al di fuori dalla scuola, un perito informatico che fa da assistente di laboratorio sa programmare molto meglio di loro.
Quoto in toto: è proprio quel che m'è capitato.

cdimauro
25-10-2005, 10:17
Spaventoso e geniale allo stesso tempo. Un metodo garantito per impedire a suoi studenti di potergli fregare il posto un giorno. Con un professore cosi si perde del tutto la voglia di lavorare in questo campo.

ciao ;)
Difficile che qualcuno possa fregargli il posto, col sistema scolastico che abbiamo. :muro:

Se fosse negli USA, dove anche per i prof. c'è una valutazione a fine anno, qualche speranza di tirare fuori gente incompetente come questa ci sarebbe. Purtroppo continueranno a far male finché non andranno in pensione (dopo anni "onorata carriera" :( ).

pequeno
25-10-2005, 10:35
Mi intrometto nella discussione.
In effetti la notazione ungherese, come diceva fek, ha senso in caso di linguaggi non fortemente tipizzati.. vedi Visual Basic, dove un variant può diventare una stringa, trasformarsi in intero, poi diventare un booleano e chi + ne ha + ne metta..
Nei linguaggi tipo C#, Java per andare sul sicuro basta seguire le convenzioni di stile rilasciate dalle stesse società creatrici del linguaggio.
Ad esempio in java si utilizza per proprietà, metodi e variabili la notazione "cammello": es. int laMiaVariabile;
Per le costanti il nome tutto in maiuscolo, e in caso di nomi formati da + parole, si uniscono con l'underscore: es. public static final MIA_COSTANTE.
I nomi dei package sono tutti in minuscolo, mentre i nomi di classe sono in notazione cammello con l'iniziale masiuscola: es. public class MiaClasse {}
In C# invece, le convenzioni suggerite da MS, sono: nomi di namespace con iniziale maiuscola e notazione cammello, nomi di classe e costanti come in java, metodi con iniziale maiuscola e notazione cammello, variabili e campi in notazione cammello con iniziali minuscole, proprietà (ossia quelle che permettono di ottimizzare i metodi setter e getter) in notazione cammello con iniziale maiuscola.
Vabbè poi sta alla disciplina del programmatore rispettare le convezioni, che ovviamente non sono vincolanti per i compilatori. :fagiano:

fek
25-10-2005, 10:41
Vabbè poi sta alla disciplina del programmatore rispettare le convezioni, che ovviamente non sono vincolanti per i compilatori. :fagiano:

Checkstyle e FxCop vengono in aiuto qui :)

Controllano lo stile e se non segue le convenzioni fanno fallire la build.