migliorabile ha scritto:
Esistono delle code conventions da usare per OGNI linguaggio di programmazione.
http://javascript.crockford.com/code.htm
https://www.w3schools.com/js/js_conventions.as
ogni programmatore che non le rispetti per PRINCIPIO e non per semplice dimenticanza, andrebbe FUSTIGATO
e se non e' un programmatore e da consigli contrari a queste convenzioni, andrebbe FUCILATO
Non concordo affatto, ci vuole però un minimo di "storia".
1) non c'è alcuna convenzione per il codice
2) non c'è nessuno standard ISO da seguire
3) ci sono delle prassi che cambiano nel tempo, principalmente a seconda del linguaggio di provenienza (più o meno verboso) del singolo programmatore.
Vi siete mai chiesti perchè gli indici normalmente vengono chiamati i,j,k, e magari le variabili float da a a d?
Per un qualche intervento divino? Ebbene no: più banalmente perchè in FORTRAN (sì, in FORTRAN) ci sono delle dichiarazioni di tipo implicito (reale, intero, booleano) codificate rigidamente.
Chi ha programmato in Fortran (cioè praticamente tutti i "padri" dell'informatica, o comunque gli "anziani") sono pertanto abituati a questa convenzione, e la "trascinano" ovunque, anche il linguaggi del tutto diversi.
3) nasce come tutto, nell'informatica, da "banalità" poi assurte a Verità Di Fede.
Mi spiego meglio: la famosa notazione ungherese, che ormai viene ritenuta da (quasi) tutti come Sacra e Intangibile,
in realtà non è altro che la convenzione di una singola persona, Charles Simonyi, ungherese appunto, per inciso vivo
e vegeto (quindi non parliamo di 10000 anni fa).
Queste convenzioni, che possiamo alla grossa riassumere come "preprorre il tipo alla variabile" dipendono dal fatto che Simonyi scriveva (come linguaggio "di provenienza") in uno che non ha i tipi delle variabili (diciamo antenato del C), nel senso che a livello del compilatore sono tutti interi, sta poi al programmatore darvi una "logica" diversa, ed è case sensitive.
Se avesse programmato in pascal, per dire, probabilmente il "mondo" come lo conosciamo oggi sarebbe diverso (probabilmente tutte le variabili e le funzioni sarebbero state scritte in minuscolo e "buonanotte").
Ad esempio il mitico prefisso sz per le stringhe (le avrete viste ovunque, soprattutto nel mondo Microsoft) non è altro che l'abbreviazione UNGHERESE della frase.
Se fosse stato inglese magari avrebbe usato zp (zero-padded) o qualcosa di diverso.
Anche il resto è più che banale: idFattura rappresenta l'identificativo della fattura (...stica...mi verrebbe da dire!), ma spesso viene insegnato come "Rivelazione Divina Buona e Giusta".
Riassumendo la stragrande maggioranza delle convenzioni che si "spacciano" non sono altro che vestigia, prassiiniziate decenni fa, senza motivi "speciali" se non le preferenze dei pionieri, poi "tramandate" più o meno modificate fino a oggi come "rivelazione divina".
Tra l'altro alcune scelte, come proprio quella ungherese, sono divenute devastanti in un mondo in cui i tipi... cambiano.
Da 16 a 32 bit, oggi a 64, e le stringhe che non sono più vettori di char (bensì "robe strane" UTF), la scelte che 40 anni fa andavano bene, oggi sono palle al piede.
Problemi di allineamento ed espansione dei bit capitano tutti i santi giorni, e sono tra i più difficili da intercettare, talvolta ci vogliono perfino anni da parte di team di superingegneri di google (classicissimo il contatore wifi in modalità ad hoc).
---
Insomma, ci sono - come in tutte le cose - "fanboy", "evangelisti", "hater" anche in questi argomenti.
Anzi le flame più "roventi" nascono proprio tra gli esperti, più che tra i dilettanti.
Come la mitica (sinonimo per inutilissima) "regolona della graffa"
function pippo() {
}
oppure
function pippo()
{
}
?? Si sono "versati" più byte per questo argomento che per la legge elettorale italiana.
Cosa dicono in sintesi i sostenitori?
Quelli della "graffa sulla riga" che è più facile scriverla con un editor di testo (es. vi, vim, nano), insomma con sistemi *nix (vero).
E che inoltre fa risparmiare spazio quando i sorgenti vengono stampati su carta (vero).
Quelli della "graffa allineata" che è immediato vedere i cicli innestati "ben" chiusi (vero)
Che ormai pochissimi stampano i sorgenti su carta (vero)
E che le stampanti laser hanno ormai annullato i problemi di stampa, nel senso che anche se devi stampare una risma non è che avrai a che fare con moduli continui inceppati eccetera, dici "stampa" e poi sono "cavoli della stampante" sputar fuori i fogli (vero).
Qual'è la scelta migliore?
Semplice, non c'è.
Questione di gusti.
Io preferisco le "graffe allineate", ma non è che debba essere "fucilato".
Il mio codice è buono (anzi ottimo), o pessimo, non è che spostando le graffe qualcosa muti.
Queste sono "masturbazioni mentali"
---
Segnalo che nelle aziende, soprattutto grandi e grandissime, esistono convenzioni più o meno restrittive (classiche quelle google) sull'aspetto "estetico" e anche logico dei sorgenti, al fine di uniformare il più possibile i lavori scritti da decine se non centinaia di persone.
Meravigliose quelle Microsoft
https://docs.microsoft.com/en-us/dotnet/visual-basic/programming-guide/program-structure/naming-conventions
e
che non sono altro che le "vestigia" proprio del mitico ungherese di 40 anni fa.
---
Nonostante questo, la regola generale, perfino per le megaaziende, è il
buonsenso.
Declinato nella conoscenza, nella consapevolezza, non nell'ignoranza.
Si-fa-qualcosa-così-perchè-lo-dice-Tizio?
OK, ma è il modo migliore? Perchè Tizio dice così? Cosa dice Caio? Sempronio potrebbe far meglio?
Stiamo discutendo del sesso degli angeli?
Seguire quanto dice Tizio è bene?
---
Ad esempio, nel mio piccolo, distinguo i parametri in ingresso alle funzioni con i_qualcosa, mentre quelle in uscita con o_qualcosa.
Ciò mi facilita la vita per capire che se nel sorgente vedo un
for i:=0 to i_elementi
significa che "i_elementi" è un parametro in input, non una variabile locale.
e se trovo
o_elementi:=i
allora sto predisponendo un risultato da una variabile locale.
Le variabili globali le chiamo g_qualcosa, mentre le variabili globali della singola form gf_qualcosa.
Ma non penso certo di aver inventato chissà quale "supremaconvenzionesalvificanecessariameravigliosa", non credo conieranno una "notazione gattesca" per sottolineare questo fondamentale passo avanti dell'umanità.