Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo
Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo
Plaud Note Pro è un registratore digitale elegante e tascabile con app integrata che semplifica trascrizioni e riepiloghi, offre funzioni avanzate come template e note intelligenti, ma resta vincolato a un piano a pagamento per chi ne fa un uso intensivo
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è uno smartphone che unisce una fotocamera molto più versatile rispetto al passato grazie allo zoom ottico 5x, il supporto magnetico Pixelsnap e il nuovo chip Tensor G5. Il dispositivo porta Android 16 e funzionalità AI avanzate come Camera Coach, mantenendo il design caratteristico della serie Pixel con miglioramenti nelle prestazioni e nell'autonomia. In Italia, però, mancano diverse feature peculiari basate sull'AI.
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
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


Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo Plaud Note Pro convince per qualità e int...
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy? Google Pixel 10 è compatto e ha uno zoom ...
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...
Il satellite cinese Jilin-1 ha fotografa...
Arrivano i nuovi iPhone ed è subi...
Il chip N1 degli iPhone 17 supporta il W...
La cinese Space Pioneer riesce a eseguir...
Xiaomi copia Apple: arriva la serie 17 e...
A 10 anni dalla prima rilevazione delle ...
Samsung annuncia il rilascio della One U...
La nuova MG4 spopola: già 26.000 ...
Monopattini pericolosi? Secondo una rice...
La Commissione Europea respinge le richi...
The Witcher: ecco le prime immagini dell...
Mitsubishi Electric verso l'acquisizione...
Pasticcio Tesla: nessuno vuole il Cybert...
Qualcomm, il nuovo SoC top di gamma &egr...
La memoria che cambierà l'AI: il ...
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: 04:12.


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