Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
L'abbonamento Ultimate di GeForce NOW ora comprende la nuova architettura Blackwell RTX con GPU RTX 5080 che garantisce prestazioni tre volte superiori alla precedente generazione. Non si tratta solo di velocità, ma di un'esperienza di gioco migliorata con nuove tecnologie di streaming e un catalogo giochi raddoppiato grazie alla funzione Install-to-Play
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Deebot X11 Omnicyclone implementa tutte le ultime tecnologie Ecovacs per l'aspirazione dei pavimenti di casa e il loro lavaggio, con una novità: nella base di ricarica non c'è più il sacchetto di raccolta dello sporco, sostituito da un aspirapolvere ciclonico che accumula tutto in un contenitore rigido
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio
Grazie ad un mocio rotante che viene costantemente bagnato e pulito, Narwal Flow assicura un completo e capillare lavaggio dei pavimenti di casa. La logica di intellignza artificiale integrata guida nella pulizia tra i diversi locali, sfruttando un motore di aspirazione molto potente e un sistema basculante per la spazzola molto efficace sui tappeti di casa
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 18-06-2007, 20:09   #1
vizzz
Senior Member
 
L'Avatar di vizzz
 
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;
}
oppure
Codice:
if (a < b)
{
  a = 0;
  return b;
}
* utilizzo di spazi dopo un operatore (for, if, while):
Codice:
if (a < b)
oppure
Codice:
if(a < b)
* tutto separato o tutto attaccato?
Codice:
a=a+b-(b*2);
oppure
Codice:
a = a + b - (b * 2);
* dove posizioni i commenti?
Codice:
if (a = 0) //controllo a
oppure
Codice:
//controllo a
if (a = 0)
* utilizzi tab oppure spazi per indentare il codice?
* cerchi di ottimizzare lo spazio?
Codice:
if (a = 0)
    c = 0;
oppure
Codice:
if (a = 0)
{
    c = 0;
}
* utilizzi nomi per le variabili, che ne ricordano il tipo?
Codice:
int iVariabile;
double dNumero;
* utilizzi suffissi m_ o simili per le variabili membro?
* e per i puntatori?

fatevi sotto, senza scannarvi
__________________
ho concluso con: kvegeta, doctordb, Leland Gaunt.

Ultima modifica di vizzz : 18-06-2007 alle 20:11.
vizzz è offline   Rispondi citando il messaggio o parte di esso
Old 18-06-2007, 21:25   #2
AngeL)
Senior Member
 
L'Avatar di AngeL)
 
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>;
ora sto imparando il java e sto cercando di utilizzare uno stile leggibile (almeno per me )...
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
    }
}
ora immagino come questo mio post vi abbia cambiato la vita

Ultima modifica di AngeL) : 18-06-2007 alle 21:27.
AngeL) è offline   Rispondi citando il messaggio o parte di esso
Old 18-06-2007, 21:27   #3
Energy++
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 1059
io faccio così:

* utilizzo delle parentesi graffe:
Codice:
if (a < b) {
  a = 0;
  return b;
}
ma anche così:
Codice:
if (a < b)
{
  a = 0;
  return b;
}
* NON utilizzo gli spazi dopo un operatore (for, if, while):
Codice:
if(a < b)
* tutto separato
Codice:
a = a + b - (b * 2);
* i commenti li metto dove viene meglio...
* 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
Energy++ è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2007, 07:53   #4
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da vizzz Guarda i messaggi
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 il tuo post per riportare lo stile che us(av)o per C (e 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:
Codice:
a = a + b - (b * 2);
* posizioni dei commenti:
Codice:
if (a = 0) //controllo a
oppure
Codice:
// Commento moooooolto lungo. In questi casi utilizzo quasi sempre /* ... */
if (a = 0)
Comunque metto pochissimi commenti nel codice (a parte quando ho lavorato all'STM, dove la stragrande maggioranza dei caratteri facevano parte dei commenti, appunto): tendo a scrivere codice pulito, facile da leggersi e con identificatori autoesplicativi.

* 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;
lo uso sempre quando c'è una sola istruzione da eseguire.

* 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;
* non utilizzo suffissi m_ o simili per le variabili membro.

* nemmeno per i puntatori.
Quote:
fatevi sotto, senza scannarvi
Per questioni di stile? Saremmo ridotti veramente male.

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())
E' un piccolo pezzo di una classe che ho scritto per realizzare un semplice sistema di template HTML.
__________________
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
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2007, 08:25   #5
ianaz
Senior Member
 
L'Avatar di ianaz
 
Iscritto dal: Jan 2005
Città: London, United Kingdom
Messaggi: 959
Codice PHP:
System.out.println("ciao, il tuo nome é " Utente.getNome() + ""); // Con spazi
System.out.println("ciao, il tuo nome é "+Utente.getNome()+""); // Senza spazi 
personalmente utilizzo gli spazi
__________________
zattix

Ultima modifica di ianaz : 19-06-2007 alle 08:28.
ianaz è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2007, 09:23   #6
repne scasb
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);
    }
Per i commenti, non li uso in quanto mi affido ad un file testo separato nel quale spiego cosa ho sviluppato nel sorgente e come.

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.
repne scasb è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2007, 10:05   #7
lovaz
Senior Member
 
L'Avatar di lovaz
 
Iscritto dal: Jul 2002
Messaggi: 4334
In riferimento ai linguaggi "tipo C":

* utilizzo delle parentesi graffe:
Codice:
if (a < b) {
  a = 0;
  return b;
}
MA sulla riga seguente per dichiarazioni di classi e metodi (funzioni).

* utilizzo di spazi dopo un operatore (for, if, while):
Codice:
if( a < b )
per evidenziare cosa c'e' dentro le parentesi.

* tutto separato o tutto attaccato?
Codice:
a = a + b - (b * 2);
* dove posizioni i commenti?
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;
MA forse dovrei abituarmi all'altra forma, visto che di recente mi e' successo che
avevo un codice tipo:
Codice:
if(...)
    blah();
else
    bleh();
poi ho aggiunto:
Codice:
if(...)
    if(...)
        blah();
...
e l'else si e' "attaccato" all'if sbagliato... ci ho messo un po' a capire dov'era l'errore

* 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.
lovaz è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2007, 10:27   #8
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
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;
}
* utilizzo di spazi dopo un operatore (for, if, while):
Codice:
if (a < b)
* tutto separato o tutto attaccato?
Codice:
a = a + b - (b * 2);
* dove posizioni i commenti?
Codice:
if (a = 0) //controllo a
Codice:
//controllo a
if (a = 0)
entrambi.. dipende dai casi...

* 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;
}
Questo costrutto con le parentesi è MOLTO + leggibile nel caso di istruzioni condizionali nidificate e/o concatenate.

* 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> ();
Quindi quando vedo un nome plurale sono sicuro che è una collection, quando vedo un nome singolare capisco cos'è immediatamente dal nome descrittivo che ho utilizzato.

* utilizzi suffissi m_ o simili per le variabili membro?
NO.
Vedi punto precedente.

* e per i puntatori?
Quali puntatori?
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2007, 15:20   #9
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
A me invece personalmente le parentesi graffe così le odio:

Codice:
if(a < b) {

.....
}
preferisco sempre fare così:

Codice:
if (a < b)
{
   blablba
}

//e le metto anche se c'è una sola riga
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2007, 15:31   #10
cionci
Senior Member
 
L'Avatar di cionci
 
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)
* utilizzi tab oppure spazi per indentare il codice? Spazi
Codice:
if(a = 0)
{
    c = 0;
}
* utilizzi nomi per le variabili, che ne ricordano il tipo? no
* 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.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 20-06-2007, 00:05   #11
medicina
Senior Member
 
L'Avatar di medicina
 
Iscritto dal: Jul 2001
Messaggi: 1785
-

Ultima modifica di medicina : 20-06-2007 alle 00:07.
medicina è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre Prova GeForce NOW upgrade Blackwell: il cloud ga...
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco Ecovacs Deebot X11 Omnicyclone: niente più...
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio Narwal Flow: con il mocio orizzontale lava i pav...
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi Panasonic 55Z95BEG cala gli assi: pannello Tande...
HONOR Magic V5: il pieghevole ultra sottile e completo! La recensione HONOR Magic V5: il pieghevole ultra sottile e co...
Larry Ellison guadagna 101 miliardi in u...
Johnson Controls amplia la gamma di solu...
NASA Perseverance: il rover potrebbe ave...
Quelli di Immuni si 'pappano' Vimeo: Ben...
Changan lancia la Deepal S05 in Europa, ...
Substrati in vetro, Intel smentisce le v...
ECOVACS DEEBOT T50 PRO OMNI Gen2 fa piaz...
Windelo 62: catamarano a vela che unisce...
Francia, in arrivo un incentivo di 1.000...
Haier, la sorpresa a IFA: la lavatrice C...
GeForce RTX 5000 SUPER in arrivo? Sembra...
Ionity prova una soluzione contro i ladr...
Pirateria, svolta clamorosa: Dazn e Lega...
Maxi richiamo Toyota e Lexus: oltre 900....
Blackwell Ultra: fino al 45% di prestazi...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 03:29.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v