You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/01-getting-started/2-manuals-specifications/article.md
+3Lines changed: 3 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -24,9 +24,12 @@ Inoltre, se state sviluppando in ambiente browser, ci sono ulteriori specifiche
24
24
Tuttavia, spesso è meglio fare una ricerca su internet. E' sufficiente cercare "MDN", seguito dal termine da ricercare, e.g. <https://google.com/search?q=MDN+parseInt> per ricercare la funzione `parseInt`, oppure frasi come "RegExp MSDN" o "RegExp MSDN jscript".
25
25
26
26
27
+
Può essere consultato al link <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference>.
28
+
27
29
-**MSDN** – Manuale Microsoft con molte informazioni, tra cui su JavaScript (a cui viene fatto riferimento con il termine JScript). Se si ha bisogno di ottenere qualche informazione specifica per Internet Explorer, meglio consultare la guida: <http://msdn.microsoft.com/>.
28
30
29
31
32
+
30
33
## Tabelle di compatibilità
31
34
32
35
JavaScript è un linguaggio che muta costantemente, con nuove funzionalità che vengono aggiunte regolarmente.
Copy file name to clipboardExpand all lines: 1-js/03-code-quality/02-coding-style/article.md
+52-34Lines changed: 52 additions & 34 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
Il codice dovrebbe essere il più pulito e leggibile possibile.
4
4
5
-
Questa è l'arte della programmazione -- programmare funzionalità complesse che siano allo stesso tempo correte e leggibili. Un corretto stile di programmazione aiuta molto in questo senso.
5
+
La programmazione è come un arte -- dobbiamo essere in grado di programmare funzionalità complesse che siano allo stesso tempo correte e leggibili. Un corretto stile di programmazione aiuta molto in questo senso.
6
6
7
7
## Sintassi
8
8
@@ -42,7 +42,7 @@ Niente di quello che stiamo dicendo è scolpito sulla pietra. Sono solo delle pr
42
42
43
43
### Parentesi graffe
44
44
45
-
In molti progetti JavaScript le parentesi graffe sono scritte con lo stile "Egiziano" con la parentesi aperta nella stessa linea della keyword -- non in una nuova linea. Dovrebbe comunque esserci spazio prima della parentesi aperta, come in questo esempio:
45
+
In molti progetti JavaScript le parentesi graffe sono scritte seguendo lo stile "Egiziano" con la parentesi aperta nella stessa linea della keyword -- non in una nuova linea. Dovrebbe comunque esserci spazio prima della parentesi aperta, come in questo esempio:
46
46
47
47
```js
48
48
if (condition) {
@@ -56,35 +56,53 @@ Un caso limite è un costrutto con una singola linea. Dovremmo comunque usare le
56
56
57
57
Qui ci sono un paio di varianti, cosi potete giudicare voi stessi:
58
58
59
-
1. 😠 Beginners sometimes do that. Bad! Curly braces are not needed:
59
+
1. 😠 I principianti spesso fanno questo. Sbagliato! Le parentesi graffe nono sono richieste:
60
60
```js
61
61
if (n <0) *!*{*/!*alert(`Power ${n} is not supported`);*!*}*/!*
62
62
```
63
-
2. 😠 Split to a separate line without braces. Never do that, easy to make an error when adding new lines:
63
+
2. 😠 Inserire l'istruzione su nuova riga senza parentesi. Non dovreste mai farlo, poiché rende molto semplice commettere errori nel caso si volesse aggiungere un'altra istruzione:
64
64
```js
65
65
if (n <0)
66
66
alert(`Power ${n} is not supported`);
67
67
```
68
-
3. 😏 One line without braces - acceptable, if it's short:
68
+
3. 😏 In una singola riga senza parantesi -- accettabile, se l'istruzione è semplice:
69
69
```js
70
70
if (n <0) alert(`Power ${n} is not supported`);
71
71
```
72
-
4. 😃 The best variant:
72
+
4. 😃 La variante migliore:
73
73
```js
74
74
if (n <0) {
75
75
alert(`Power ${n} is not supported`);
76
76
}
77
77
```
78
78
79
-
For a very brief code, one line is allowed, e.g. `if (cond) returnnull`. But a code block (the last variant) is usually more readable.
80
-
81
-
In sintesi:
82
-
- Per codici molto brevi, una sola riga è accettabile. Ad esempio: `if (cond) returnnull`.
83
-
- Ma una singola riga per ogni istruzione è generalmente più facile da leggere.
79
+
Per istruzioni molto brevi, è consentito scrivere su una sola riga, ad esempio `if (cond) returnnull`. Ma un blocco di codice risulta essere molto più leggibile.
84
80
85
81
### Lunghezza della riga
86
82
87
-
Nessuno ama leggere lunghe righe orizzontali di codice. Una buona norma è dividere le righe più lunghe in qualcosa di più breve.
83
+
Nessuno ama leggere lunghe righe orizzontali di codice. Una buona norma è quella di dividere le righe più lunghe in righe più brevi.
84
+
85
+
Ad esempio:
86
+
```js
87
+
// i backtick consentono di dividere la stinga in più righe
88
+
let str =`
89
+
ECMA International's TC39 is a group of JavaScript developers,
90
+
implementers, academics, and more, collaborating with the community
91
+
to maintain and evolve the definition of JavaScript.
92
+
`;
93
+
```
94
+
95
+
Invece, per le istruzioni `if`:
96
+
97
+
```js
98
+
if (
99
+
id ===123&&
100
+
moonPhase ==='Waning Gibbous'&&
101
+
zodiacSign ==='Libra'
102
+
) {
103
+
letTheSorceryBegin();
104
+
}
105
+
```
88
106
89
107
La lunghezza massima dovrebbe essere accordata a livello di team. Solitamente tra gli 80-120 caratteri.
90
108
@@ -98,7 +116,7 @@ Ci sono due tipi di indentazione:
98
116
99
117
Un vantaggio degli spazi contro i tabs è che gli spazi permettono configurazioni più flessibili.
100
118
101
-
Ad esempio, possiamo allineare gli argomenti con l'apertura della parentesi, come qui:
119
+
Ad esempio, possiamo allineare gli argomenti con l'apertura della parentesi, come nell'esempio:
102
120
103
121
```js no-beautify
104
122
show(parameters,
@@ -131,15 +149,15 @@ Ci sono due tipi di indentazione:
131
149
132
150
### Punto e virgola
133
151
134
-
Un punto e virgola dovrebbe essere presente alla fine di ogni istruzione, anche se potrebbe essere evitata.
152
+
Il punto e virgola dovrebbe essere presente alla fine di ogni istruzione, anche se non è obbligatorio.
135
153
136
-
Esistono linguaggi in cui il punto e virgola sono realmente opzionali e possono essere evitati. In JavaScript, esistono casi in cui un "a capo" non viene interpretato come un punto e virgola, lasciando quindi il codice vulnerabile agli errori.
154
+
Esistono linguaggi in cui il punto e virgola è realmente opzionale e può essere omesso. In JavaScript, esistono casi in cui un "a capo" non viene interpretato come un punto e virgola, lasciando quindi il codice vulnerabile agli errori.
137
155
138
-
Quando diventerete più maturi come programmatori, potreste scegliere lo stile senza punto e virgola [StandardJS](https://standardjs.com/). Fino a quel momento la miglio scelta è di inserirla alla fine di ogni istruzione per evitare errori.
156
+
Quando diventerete più maturi come programmatori, potreste scegliere lo stile senza punto e virgola [StandardJS](https://standardjs.com/). Fino a quel momento la scelta migliore è quella di inserirlo alla fine di ogni istruzione per evitare errori.
139
157
140
158
### Livelli di annidamento
141
159
142
-
Nel codice vanno evitati elevati liveeli di annidamento.
160
+
Nel codice vanno evitati elevati livelli di annidamento.
143
161
144
162
Qualche volta torna utile la direttiva ["continue"](info:while-for#continue) per evitare annidamenti extra.
145
163
@@ -253,17 +271,17 @@ Se state scrivendo molte funzioni "ausiliarie", ci sono tre modi per organizzarl
253
271
```
254
272
3. Mix: una funzione viene dichiarata nel punto in cui viene utilizzata la prima volta.
255
273
256
-
Nella maggioranza dei casi si preferisce la seconda opzione.
274
+
Nella maggior parte dei casi si preferisce la seconda opzione.
257
275
258
276
Questo perché quando leggiamo il codice vogliamo prima di tutto sapere *cosa fa*. Mettendo prima il codice possiamo fornire queste informazioni. Successivamente, potrebbe non essere necessario leggere le funzioni, soprattutto se i loro nomi sono autodescrittivi.
259
277
260
-
## Guida di stile
278
+
## Style guide
261
279
262
-
Una guida di stile contiene regole generali riguardo a "come scrivere" il codice, ad esempio quali apici utilizzare, di quanti spazi indentare, quando andare a capo, etc. Molti altri dettagli.
280
+
Una style guide contiene regole generali riguardo a "come scrivere" il codice, ad esempio quali apici utilizzare, di quanti spazi indentare, quando andare a capo, e molti altri dettagli.
263
281
264
-
Quando tutti i membri del team utilizzano lo stesso stile tende ad essere uniforme.
282
+
Quando tutti i membri del team utilizzano la stessa guida, il codice tende ad essere più uniforme.
265
283
266
-
Certamente, un team può utilizzare il proprio stile guida. Molte volte non serve. Ci sono molte opzioni tra cui scegliere, quindi scegliere tra una di queste generalmente è la scelta migliore.
284
+
Certamente un team può utilizzare la propria style guide, ma spesso non è necessario definirne una propria. Ce ne sono molte già pronte, scegliere una tra queste è generalmente la scelta migliore.
267
285
268
286
Alcune delle scelte più popolari:
269
287
@@ -275,7 +293,7 @@ Alcune delle scelte più popolari:
275
293
276
294
Se sei un nuovo sviluppatore, inizia con i consigli di questo capitolo. Quando avrai appreso bene lo stile potrai cercare quello che più ti appartiene.
277
295
278
-
## Pulitori automatizzati
296
+
## Linter
279
297
280
298
I linters sono strumenti che controllano automaticamente lo stile del codice e vi danno consigli su come sistemarlo.
281
299
@@ -287,16 +305,16 @@ Alcuni fra i linter più conosciuti:
287
305
- [JSHint](http://www.jshint.com/) -- molte più opzioni di JSLint.
288
306
- [ESLint](http://eslint.org/) -- il più recente.
289
307
290
-
Tutti quelli elencati svolgono molto bene il lavoro. L'autore utilizza [ESLint](http://eslint.org/).
308
+
Tutti quelli elencati svolgono molto bene il lavoro. L'autore della guida utilizza [ESLint](http://eslint.org/).
291
309
292
-
Molti linter sono integrati negli editor più popolari: è sufficiente attivare il plugin e configurare lo stile.
310
+
Molti linter sono integrati negli editor più popolari: è sufficiente attivare il plugin e configurare lo stile desiderato.
293
311
294
-
Ad esempio, per ESLint dovreste seguire quanto segue:
312
+
Ad esempio, per poter utilizzare ESLint è sufficiente:
295
313
296
-
1. Installare [Node.js](https://nodejs.org/).
297
-
2. Installare ESLint con il comando `npm install -g eslint` (npm è package installer di JavaScript).
298
-
3. Create un file di configurazione e rinominatelo`.eslintrc` nella root del vostro progetto JavaScript (la cartella che contiene tutti i file).
299
-
4. Installa/abilita il plugin per il tuo editor per integrare ESLint. La maggior parte degli editor ne ha uno.
314
+
1. Installa [Node.js](https://nodejs.org/).
315
+
2. Installa ESLint con il comando `npm install -g eslint` (npm è un package manager di JavaScript).
316
+
3. Crea un file di configurazione e chiamalo`.eslintrc` nella root del tuo progetto JavaScript (la cartella che contiene tutti i file).
317
+
4. Installa/abilita il plugin per il tuo editor per integrare ESLint. La maggior parte degli editor ne possiede uno.
300
318
301
319
Qui un esempio di di un file `.eslintrc`:
302
320
@@ -317,14 +335,14 @@ Qui un esempio di di un file `.eslintrc`:
317
335
318
336
La direttiva `"extends"` indica che la configurazione è basata sulla lista dei setting "eslint:recommended". Dopodiché potremo specificare il nostro stile personale.
319
337
320
-
E' anche possible scaricare un set di regole dal web ed estenderle a nostro piacimento. Vedi <http://eslint.org/docs/user-guide/getting-started> per maggiori dettagli riguardo l'installazione.
338
+
E' anche possibile scaricare un set di regole dal web ed estenderle a nostro piacimento. Vedi <http://eslint.org/docs/user-guide/getting-started> per maggiori dettagli riguardo l'installazione.
321
339
322
340
Molti IDE hanno dei linter integrati, che sono comodi ma non sono editabili come ESLint.
323
341
324
342
## Riepilogo
325
343
326
-
Tutte le regole sintattiche descritte in questo capitolo (e nei riferimenti dei vari stili di programmazione) aiutano ad incrementare la leggibilità del codice, ma sono tutti contestabili.
344
+
Tutte le regole sintattiche descritte in questo capitolo (e nei riferimenti delle style guides) aiutano ad incrementare la leggibilità del codice, ma sono tutte contestabili.
327
345
328
-
Quando stiamo pensando a come scrivere codice "migliore", la domanda dovrebbe essere "Cosa rende il codice più leggibile e facile da capire?" e "Cosa può aiutarmi ad evitare gli errori?". Queste sono le principali cose da tenere a mente quando stiamo cercando di scegliere uno stile guida.
346
+
Quando stiamo pensando a come scrivere codice "migliore", la domanda dovrebbe essere "Cosa rende il codice più leggibile e facile da capire?" e "Cosa può aiutarmi ad evitare gli errori?". Queste sono le principali cose da tenere a mente quando stiamo cercando di scegliere una style guide.
329
347
330
-
Leggere fra gli stili più popolari vi consentirà di tenervi aggiornati con le ultime idee riguardo gli stili di programmazione e le best practices.
348
+
Conoscere gli stili più popolari vi consentirà di tenervi aggiornati con le ultime idee riguardo gli stili di programmazione e le best practices.
Copy file name to clipboardExpand all lines: 1-js/03-code-quality/03-comments/article.md
+15-15Lines changed: 15 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# Commenti
2
2
3
-
Come abbiamo già appreso dal capitolo <info:structure>, i commenti possono essere di una singola-riga: ed iniziano con `//` oppure multilinea: `/* ... */`.
3
+
Come abbiamo già appreso dal capitolo <info:structure>, i commenti possono essere di una singolariga: ed iniziano con `//` oppure multilinea: `/* ... */`.
4
4
5
5
Normalmente li utilizziamo per descrivere come e perché funziona il codice.
6
6
@@ -20,11 +20,11 @@ code;
20
20
21
21
Nel buon codice la quantità di commenti "esplicativi" dovrebbe essere minima. In realtà il codice dovrebbe essere facile da comprendere anche senza.
22
22
23
-
C'è una bellissima regola a riguardo: "Se il codice è cosi poco chiaro da richiedere un commento, probabilmente dovrebbe essere riscritto".
23
+
C'è una bellissima citazione a riguardo: "Se il codice è cosi poco chiaro da richiedere un commento, probabilmente dovrebbe essere riscritto".
24
24
25
25
### Ricetta: raccogliere in una funzione
26
26
27
-
Qualche volta può essere un beneficio rimpiazzare un pezzo di codice in una funzione, come in questo esempio:
27
+
Qualche volta può essere un beneficio rimpiazzare un pezzo di codice con una funzione, come in questo esempio:
28
28
29
29
```js
30
30
functionshowPrimes(n) {
@@ -65,7 +65,7 @@ function isPrime(n) {
65
65
}
66
66
```
67
67
68
-
Ora possiamo capire il codice più facilmente. La funzione stessa diventa un commento. Questo tipo di codice viene definito *self-descriptive* (auto-descrittivo).
68
+
Ora possiamo capire il codice più facilmente. La funzione stessa diventa un commento. Questo tipo di codice viene definito *auto-descrittivo*.
69
69
70
70
### Ricetta: creare funzioni
71
71
@@ -79,7 +79,7 @@ for(let i = 0; i < 10; i++) {
79
79
add(drop, glass);
80
80
}
81
81
82
-
// qui aggiungiamo della spremuta (juice)
82
+
// qui aggiungiamo della spremuta
83
83
for(let t =0; t <3; t++) {
84
84
let tomato =getTomato();
85
85
examine(tomato);
@@ -111,16 +111,16 @@ function addJuice(container) {
111
111
}
112
112
```
113
113
114
-
Ripeto nuovamente, le funzioni stesse dicono cosa andranno a fare. Inoltre la struttura del codice è migliore quando è spezzata. E' chiaro cosa ogni funzione faccia, cosa richiede e cosa eventualmente ritorna.
114
+
Ripeto nuovamente, le funzioni stesse dovrebero dire cosa sta succedendo. Non dovrebbe esserci alcun bisogno di commenti. Inoltre anche l'architettura del codice è migliore quando è spezzata. Rende più chiaro lo scopo di ogni funzione.
115
115
116
-
Nella pratica, non possiamo evitare del tutto i commenti "esplicativi". Ci sono algoritmi molto complesso. E ci sono vari "trucchi" con lo scopo di ottimizzare questo tipo di commenti. In linea di massima dovremmo però cercar di tenere il codice semplice ed auto-descrittivo.
116
+
Nella pratica, non possiamo evitare del tutto i commenti "esplicativi". Ci sono algoritmi molto complessi. E ci sono vari "trucchi" con lo scopo di ottimizzare questo tipo di commenti. In linea di massima dovremmo però cercare di tenere il codice semplice ed auto-descrittivo.
117
117
118
118
## Buoni commenti
119
119
120
120
Quindi, solitamente i commenti esplicativi sono sbagliati. Quali sono allora i commenti giusti?
121
121
122
122
Descrivere l'architettura
123
-
: Fornire un visuale di alto livello dei componenti, come interagiscono, come si comporta il flusso d'esecuzione in certe situazioni... In breve -- gli "occhi d'aquila" del codice. C'è uno speciale linguaggio schematico [UML](http://wikipedia.org/wiki/Unified_Modeling_Language) per schematizzare ad alto livello. Assolutamente da conoscere.
123
+
: Fornire un visuale di alto livello dei componenti, come interagiscono, come si comporta il flusso d'esecuzione in certe situazioni... In breve -- gli "occhi d'aquila" del codice. Esiste uno speciale linguaggio di schematizzazione, [UML](http://wikipedia.org/wiki/Unified_Modeling_Language) per per la descrizione dell'architettura ad alto livello. Da studiare assolutamente.
124
124
125
125
Documentare l'utilizzo di una funzione
126
126
: Esiste una particolare sintassi [JSDoc](http://en.wikipedia.org/wiki/JSDoc) per documentare le funzioni: utilizzo, parametri, valori di ritorno.
@@ -141,7 +141,7 @@ Documentare l'utilizzo di una funzione
141
141
142
142
Questi commenti ci consentono di capire lo scopo della funzione e come utilizzarla correttamente senza guardarne il codice.
143
143
144
-
In ogni caso, molti editor come [WebStorm](https://www.jetbrains.com/webstorm/) li comprendono e possono quindi utilizzarli per autocomplete e alcune verifiche automatiche del codice.
144
+
I molti casi, gli editor come [WebStorm](https://www.jetbrains.com/webstorm/) sono in grado di comprenderli e possono quindi utilizzarli per autocompletamenti e alcune verifiche automatiche del codice.
145
145
146
146
Ci sono anche tool come [JSDoc 3](https://github.com/jsdoc3/jsdoc) che possono generare documentazione in HTML a partire dai commenti. Puoi scoprire di più riguardo JSDoc su <http://usejsdoc.org/>.
147
147
@@ -151,20 +151,20 @@ Perché l'azione viene risolta in quel modo?
151
151
Se ci sono diverse modalità di risolvere una determinata azione, perché si è scelta questa? Specialmente quando non risulta la scelta più ovvia.
152
152
153
153
Senza dei commenti si potrebbero generare le seguenti situazioni:
154
-
1. Tu (o un tuo collega) apre il codice un pò di tempo dopo, lo guarda e pensa che il codice è "poco ottimale".
155
-
2. Voi stessi potreste pensare: "Quanto stupido sono stato qui, e quanto intelligente sono adesso", e riscriverla utilizzando "la più ovvia e corretta" variante.
156
-
3. ...Lo stimolo di riscriverla sarebbe corretto. Ma quando l'avete scritta vi siete resi conto che la soluzione "più ovvia" era effettivamente peggiore. Andando a rileggerla potreste non ricordarvi neanche perché. Quindi dopo averla riscritta vi rendete conto che è meglio tornare indietro, avete sprecato tempo.
154
+
1. Tu (o un tuo collega) apri il codice un po' di tempo dopo, lo guardi e pensi che il codice è "poco ottimizzato".
155
+
2. Tu stesso potresti pensare: "Quanto stupido sono stato qui, e quanto intelligente sono adesso", e riscriverla utilizzando la variante "più ovvia e corretta".
156
+
3. ...Lo stimolo di riscriverla sarebbe forte. Ma quando l'hai scritta ti eri reso conto che la soluzione "più ovvia" era effettivamente peggiore. Andando a rileggerla potresti non ricordarti neanche perché. Quindi dopo averla riscritta ti rendi conto che è meglio tornare indietro, hai sprecato tempo.
157
157
158
158
Commenti che spiegano la soluzione sono fondamentali. Vi aiutano a sviluppare mantenendo sempre la strada corretta.
159
159
160
160
Ci sono alcune piccolezze? Dove vengono utilizzate?
161
-
: Se il codice contiene sottigliezze contro-intuitive, vale certamente la pena commentarle.
161
+
: Se il codice contiene sottigliezze controintuitive, vale certamente la pena commentarle.
162
162
163
163
## Riepilogo
164
164
165
-
Un importante valore che possiede un bravo sviluppatore sono i commenti: la loro presenza o assenza.
165
+
Un importante qualità che deve possedere un bravo sviluppatore, è quella di saper scrivere dei buoni commenti.
166
166
167
-
I buoni commenti ci consentono di mantenere bene il codice, di poterci tornare dopo un pò di tempo e capire le scelte prese.
167
+
I buoni commenti ci consentono di mantenere il codice in uno stato ottimale, e di poterci tornare dopo un po' di tempo e capire le scelte prese.
0 commit comments