Autore Topic: Questione di stile  (Letto 1191 volte)

Offline Mario

  • Grande Gambero
  • ***
  • Post: 138
    • Mostra profilo
    • http://overhill1963.blogspot.com/
Questione di stile
« il: 13 Settembre 2008, 18:07:14 »
Ciao a tutti :)

Una delle ultime cose che si imparano, quando si decide di studiare un linguaggio, è "lo stile" con cui immettere le specifiche. Purtroppo ho vissuto dei drammi esistenziali quando ho dovuto mettere mano a programmi scritti da colleghi senza un minimo di stile, e questo sarebbe il meno, ma anche senza nessun commento!
Sfilze di istruzioni una dietro l'altra senza che si capisca quando inizia un blocco e quando finisce.

Memore di questo cerco di scrivere codice con un minimo di criterio, inserendo commenti dove mi sembrano necessari, e indentando le istruzioni nidificate.
Ma è sufficiente?
Probabilmente no. C'è anche da fare i conti con i nomi dei campi e delle funzioni.
Sul mio sistema preferito (l'AS/400), fino all'RPGIII i nomi dei campi non potevano superare i sei caratteri (avete letto bene: 6 caratteri!!) e questo causava dei salti mortali per riuscire a dare un nome decente alle variabili.
Ecco per esempio che un campo che doveva contenere l'Imponibile Iva poteva essere IMPNIV, e l'importo iva invece era IMPIVA. Ma come chiamare un campo che conteneva il totale degli importi esenti? TOIMES? E vi pare chiaro?
Ovviamente in Gambas un campo del genere potrebbe essere scritto "a gobba di dromedario", TotaleImportiEsenti, tanto per dire, diventando autoesplicativo, quindi senza necessità di commenti.
E la funzione che calcola il totale degli importi esenti potrebbe essere CalcolaTotaleImportiEsenti()... Autoesplicativo, ma sembra quasi un romanzo :)

Insomma, lo stile in un programma ha una sua precisa importanza.
Voi come affrontate il "problema", se così si può chiamare, della "calligrafia" di un codice?
Saluti a tutti

Mario

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Questione di stile
« Risposta #1 il: 13 Settembre 2008, 18:26:25 »
questo è vero per chi a intenzione di distribuire un software open-source..ma chi realizza un programma per scopi personali o lo distribuisce "a scatola chiusa" secondo me non deve farsi tutti questi problemi....
Ad esempio io a volte quando sto scrivendo un programma ed ho un problema magari ci penso e non appena mi viene un idea improvvisa scrivo magari dando alle variabili nomi corti e improvvisati....poi però mi dimentico di cambiarli successivamente e il codice rimane un pò "criptico"!!!

io ad esempio ho il mio metodo, le variabili numeriche le chiamo sempre con le lettere a,b,c,d,e,f,g,h,i....ecc..mentre alle stringhe do un nome!!!

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Questione di stile
« Risposta #2 il: 14 Settembre 2008, 16:53:28 »
Ai widget cerco sempre di dare un nome che inizia con un abbreviativo del loro tipo (eredità del VB...): ad esempio, btnOK so che è il pulsante "OK" di un form, o btnChiudi so che è il pulsante per chiuderlo, così che se edito l'evento btnChiudi_Click so che sto modificando il codice relativo al pulsante di chiusura.
In questo modo btnAuto e frmAuto so che sono 2 cose differenti fra di loro: il primo è un pulsante che apre il form di gestione delle auto (che è il secondo).

Per le variabili di comodo, vale a dire quelle variabili che all'interno degli algoritmi servono come indice o come contenitore temporaneo di qualcosa, da tempo utilizzo questo sistema: Aiuto, Aiuto2, Aiuto3 per le variabili integer che uso come indice; Comodo, Comodo2, Comodo3 per le variabili string. E' un po' come ai tempi del Basic dei Commodore o del Gw-Basic si usava i,j,l e a$, b$, c$ :-)
Se invece le variabili sono qualcosa di particolare oppure globali all'interno di una classe, allora cerco di mettere un nome per esteso: TotaleIva è un buon esempio.

Un'altra cosa che cerco di fare è di commentare spesso passaggi strani del codice, questo per non ritrovarmi, dopo 6 mesi, a cercare di capire cosa sta facendo un determinato algoritmo.

Ed un'altra cosa che adotto _sempre_ è la tabulazione, eredità del TurboPascal: ogni volta che apro un ciclo (if, for, while, ecc...) tabulo sempre, in modo che già visivamente so una porzione di codice a quale blocco condizionale appartiene.
Visita il mio sito personale: http://www.leonardomiliani.com

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Questione di stile
« Risposta #3 il: 15 Settembre 2008, 10:09:56 »
La buona scrittura di codice è, per così dire, una cosa abbastanza personale e dipendente dalle esperienze fatte.
Esiste in giro una guida di base per la definizione di funzioni e variabili, nonchè di nomenclatura di file, ma ad ogni modo è solo una guida, che non determina la scrittura di uno specifico formato per ogni singolo linguaggio.
Come ha scritto overhill, in RPG si usano 6 caratteri, qusto mi ricorda quando programmavo in assembler e in C, quando non esisteva ancora windoz e similari. La cosa era alquanto criptica in lettura, e necessitava di documentazione e specifiche scritte, e non solo internamente al codice.
Con l'avvento di nuove macchine e nuovi linguaggi, queste limitazioni e queste barriere dimensionali sono state abbattute, lasciando più libertà al programmatore di descrivere meglio il codice, però è anche vero che l'abitudine ha cozzato con questa novità, per cui un programmatore , ad esempio in asm. ha difficoltà a cambiare il modus operandi.
A parte questo, come più o meno tutti, anche io cerco di dare dei nomi più o meno esplicativi alle variabili e ai metodi, ma cerco pure di dare altre informazioni del tipo: se sono numerici o stringhe, cosa potrebbero contenere insomma...
In questo caso il nome di una variabile, ad esempio, può assumere il nome di: nVar=variabile numerica, iVar=variabile usata come indice numerico, sVar=variabile stringa, oVar=oggetto. In gambas, per le variabili private di una classe, le identifico con il prefisso $, mentre per quelle interne ad una funzione non metto nessun prefisso; per le funzioni o i metodi pubblici, il nome inizia sempre con una lettera maiuscola, mentre per quelli privati li identifico con un underscore iniziale...
Tutto ciò è comunque un'impostazione personale; se, mettiamo il caso, mi mettessi ad utilizzare la nomenclatura limitata dell'assembler, dovrei a questo punto obbligatoriamente documentare l'identificativo, sia all'interno del codice, che nelle eventuali specifiche cartacee, altrimenti il poveraccio che leggerebbe il codice, o dovesse metterci mano, andrebbe nel pallone... :-)

In definitiva, non esiste una norma per la scrittura di codice, se non dettata in forma specifica dal cliente o dal datore di lavoro, ma sicuramente il programmatore deve cercare in tutti i modi di documentare il più possibile quello che stà scrivendo. E' ovvio che in alcuni casi, come ad esempio una funzione che esegue una singola e semplice operazione, basta l'inserimento di una noticina in testa alla stessa; ma per in particolari condizioni è d'obbligo addirittura documentare ogni singola riga di codice, come ad esempio un complicato algoritmo di calcolo...

Offline Mario

  • Grande Gambero
  • ***
  • Post: 138
    • Mostra profilo
    • http://overhill1963.blogspot.com/
Re: Questione di stile
« Risposta #4 il: 15 Settembre 2008, 15:57:48 »
Be', posso garantirvi che programmando molto e in posti diversi, mi capita spesso di trovarmi davanti dei programmi scritti da me qualche anno prima.. e non capirci nulla!
No, be', adesso esagero, ma trovare qualche passaggio strano e non ricordare il perché l'ho fatto così, è cosa che mi capita ogni tanto.
Per cui il lavoro di documentazione non è solo per gli altri, ma anche 8e soprattutto) per noi stessi :)
Saluti a tutti

Mario

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Questione di stile
« Risposta #5 il: 16 Settembre 2008, 13:42:09 »
E' vero anche quello che hai detto!

Il fatto è anche perchè, negli anni si impara a migliorare il proprio stile...

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Questione di stile
« Risposta #6 il: 17 Settembre 2008, 22:01:03 »
La documentazione è _fondamentale_.
E' uno dei punti che ho citato anch'io:
Citazione
Un'altra cosa che cerco di fare è di commentare spesso passaggi strani del codice, questo per non ritrovarmi, dopo 6 mesi, a cercare di capire cosa sta facendo un determinato algoritmo.
Visita il mio sito personale: http://www.leonardomiliani.com