|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
|
stile di scrittura codice sorgente
Propongo un piccolo questionario non a scopo flame per indagare sugli "stili" di scrittura di codice sorgente...indentazione, graffe, tab, spazi, nomi variabili ecc..
E' pura curiosità mia e di altri utenti, nata da un altro post di questa sezione. Capisco che intrinsecamente alcuni linguaggi sono fortemente dipendenti da tutti questi parametri, ma non mi sembra giusto limitare il questionario ad un solo linguaggio di programmazione... Quindi direi ogni utente che vuole dire la sua, specifica: 1) linguaggio 2) le convenzioni che utilizza per scrivere codice. così su due piedi mi vengono in mente queste possibili diversità ,ma siete liberi di espandere all'infinito la lista segnalandomelo: * utilizzo delle parentesi graffe: Codice:
if (a < b) { a = 0; return b; } Codice:
if (a < b) { a = 0; return b; } Codice:
if (a < b) Codice:
if(a < b) Codice:
a=a+b-(b*2); Codice:
a = a + b - (b * 2); Codice:
if (a = 0) //controllo a Codice:
//controllo a if (a = 0) * cerchi di ottimizzare lo spazio? Codice:
if (a = 0) c = 0; Codice:
if (a = 0) { c = 0; } Codice:
int iVariabile; double dNumero; * e per i puntatori? fatevi sotto, senza scannarvi ![]()
__________________
![]() Ultima modifica di vizzz : 18-06-2007 alle 20:11. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
|
prima, quando programmavo principalmente in perl, scrivevo codice che ci capivo solo io (niente commenti, niente indentazione...).
tipo questo: Codice:
$_=<STDIN>; chomp; print $_ . ' = '; $div=2; while($_!=1) { if($_ % $div) { $div++ } else { $_/=$div; $divs{$div}++; } } @keys= sort{$a<=>$b} (keys %divs); $lastk=pop @keys; foreach $k (@keys) { print $k; print ('^' . $divs{$k}) if $divs{$k}>1; print ' x '; } print $lastk; print ('^' . $divs{$lastk}) if $divs{$lastk}>1; print "\n"; $x=<STDIN>; ![]() tipo: Codice:
final double PI = 3.14; // commenti dopo la linea int num = 3; // senza prefisso per identificare il tipo double num2 = num + 3 * PI; // spazi tra gli operatori if (num > PI) { //spazio dopo if e prima della graffa if (num2 > PI) { // graffa dopo if e non a capo num = num2; // 4 spazi / livello per indentare } } ![]() Ultima modifica di AngeL) : 18-06-2007 alle 21:27. |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 1059
|
io faccio così:
* utilizzo delle parentesi graffe: Codice:
if (a < b) { a = 0; return b; } Codice:
if (a < b) { a = 0; return b; } Codice:
if(a < b) Codice:
a = a + b - (b * 2); * se dopo un if c'è solo un istruzione, niente parentesi * non utilizzo nomi per variabili che ne ricordano il tipo.... (forse dovrei) * idem per i puntatori |
![]() |
![]() |
![]() |
#4 | ||
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
* utilizzo delle parentesi graffe: Codice:
if (a < b) { a = 0; return b; } Codice:
if (a < b) Codice:
a = a + b - (b * 2); Codice:
if (a = 0) //controllo a Codice:
// Commento moooooolto lungo. In questi casi utilizzo quasi sempre /* ... */ if (a = 0) * utilizzo spazi per indentare il codice: i tab li suo, ma li faccio convertire in spazi dall'editor. Un tab = 2 spazi. * non ottimizzo lo spazio: se un blocco presenta una sola istruzione, trovo inutile aprire un blocco con le parentesi graffe. Quindi questo: Codice:
if (a = 0) c = 0; * utilizzo nomi per le variabili che ne ricordano il tipo quando devo realizzare delle interfacce o delle classi astratte, ma in questi casi o cerco un avverbio che possa rendere il nome dell'interfaccia (es: Drawable) oppure metto come prefisso "Abstract" (es: AbstractPlayfield). Per il resto i nomi sono quasi sempre autoesplicativi, tranne quando dal contesto l'uso è evidente (ad esempio gli indici di un ciclo: spesso e volentieri utilizzo i, j, k, ecc.). Codice:
int Contatore; double Valuta; * nemmeno per i puntatori. Quote:
![]() Con Python il mio stile è molto simile a quello qui sopra descritto, tranne per il fatto che non ci sono parentesi graffe o istruzioni per delimitare i blocchi. Ad esempio: Codice:
class Template: 'Implements a template system for HTML rendering' HeadTemplate = '''<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//IT"> <%(html)s> <%(head)s> <%(meta)s %(http-equiv)s = "Content-Type" %(content)s = "text/html; charset=iso-8859-1"> <%(title)s>%(Title)s</%(title)s> </%(head)s> <%(body)s%(Body)s>''' def __init__(self, Title, *Arguments, **Keywords): self.LowerCase() self.Lines = [''] self.DebugLines = [] self.ShowDebug = True self.HideBodyOnDebugInfo = False self.NewLine = True self.AutoIndent = True self.BeginTR = ''; self.EndTR = '' self.DB = None self.PendingTags = [self.ApplyCase('html'), self.ApplyCase('body')] self.Title(Title, *Arguments, **Keywords) def __str__(self): 'Return the informations logged as a string' return '\n'.join(self.Lines) + '\n' def SetDB(self, DB): 'Sets the database instance (DBUtils.AbstractDB descendant) to be used to read data from a db' self.DB = DB def SetCase(self, UpperCase): 'Sets the case to be used for HTML tags; True means uppercase, False lowercase' self.ApplyCase = (lambda x : x.upper()) if UpperCase else (lambda x : x.lower())
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
||
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jan 2005
Città: London, United Kingdom
Messaggi: 959
|
Codice PHP:
![]()
__________________
zattix Ultima modifica di ianaz : 19-06-2007 alle 08:28. |
![]() |
![]() |
![]() |
#6 |
Bannato
Iscritto dal: Feb 2003
Messaggi: 947
|
Sull'utilizzo delle parentesi graffe, spazi dopo un operatore (for, if, while), tutto attaccato o meno (uso "return(1)" e non "return 1"):
Codice:
if(a<b) { a=0; return(b); } Indentazione codice: 4 spazi. Non uso parentesi graffe se un blocco e' costituito da una sola riga. Costanti tutte maiuscole, variabili tutte minuscole, nomi di funzioni minuscole con in maiuscolo il primo carattere o il primo caratte dopo uno spazio. Qualsiasi spazio nel nome di una variabile, costante o funzione e sostituito dal carattere "_". Utilizzo l'old-style per la dichiarazione delle funzioni. Non ho problemi a nidificare il codice, ne ad avere righe di codice di 100 e oltre caratteri. |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Jul 2002
Messaggi: 4334
|
In riferimento ai linguaggi "tipo C":
* utilizzo delle parentesi graffe: Codice:
if (a < b) { a = 0; return b; } * utilizzo di spazi dopo un operatore (for, if, while): Codice:
if( a < b ) * tutto separato o tutto attaccato? Codice:
a = a + b - (b * 2); Dipende dalla lunghezza. * utilizzi tab oppure spazi per indentare il codice? E che ne so, lascio fare a Eclipse... ![]() * cerchi di ottimizzare lo spazio? Codice:
if (a = 0) c = 0; avevo un codice tipo: Codice:
if(...) blah(); else bleh(); Codice:
if(...) if(...) blah(); ... ![]() * utilizzi nomi per le variabili, che ne ricordano il tipo? * utilizzi suffissi m_ o simili per le variabili membro? * e per i puntatori? Dipende, se serve a rendere piu' leggibile il codice.
__________________
|Java Base| |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
1) linguaggio
Java * utilizzo delle parentesi graffe: Codice:
if (a < b) { a = 0; return b; } Codice:
if (a < b) Codice:
a = a + b - (b * 2); Codice:
if (a = 0) //controllo a Codice:
//controllo a if (a = 0) * utilizzi tab oppure spazi per indentare il codice? inutile fare questa suddivisione dato che un qualsiasi editor converte i tab in spazi e viceversa ![]() * cerchi di ottimizzare lo spazio? Codice:
if (a = 0){ c = 0; } * utilizzi nomi per le variabili, che ne ricordano il tipo? NO. Eclipse mi dice già di che tipo sono quando gli passo il mouse di sopra... E cmq già dal nome è facile intuire il tipo. Esempio: Codice:
Node node = new Node(); Collection <Node> nodes = new ArrayList <Node> (); * utilizzi suffissi m_ o simili per le variabili membro? NO. Vedi punto precedente. * e per i puntatori? Quali puntatori? ![]()
__________________
![]() |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Sep 2004
Messaggi: 3967
|
A me invece personalmente le parentesi graffe così le odio:
Codice:
if(a < b) { ..... } Codice:
if (a < b) { blablba } //e le metto anche se c'è una sola riga
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek ![]() |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Io faccio così:
Codice:
{ a = 0; return b; } Codice:
if(a < b) Codice:
a = a + b - (b * 2); Codice:
//controllo a if(a = 0) Codice:
if(a = 0) { c = 0; } * utilizzi suffissi m_ o simili per le variabili membro? no * e per i puntatori? no Ultima modifica di cionci : 21-06-2007 alle 23:35. |
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Jul 2001
Messaggi: 1785
|
-
Ultima modifica di medicina : 20-06-2007 alle 00:07. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:29.