Skip to content

Commit 3dfc2be

Browse files
authored
Merge branch 'master' into master
2 parents d966524 + f300bd4 commit 3dfc2be

File tree

19 files changed

+332
-254
lines changed

19 files changed

+332
-254
lines changed

1-js/01-getting-started/2-manuals-specifications/article.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,12 @@ Inoltre, se state sviluppando in ambiente browser, ci sono ulteriori specifiche
2424
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".
2525

2626

27+
Può essere consultato al link <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference>.
28+
2729
- **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/>.
2830

2931

32+
3033
## Tabelle di compatibilità
3134

3235
JavaScript è un linguaggio che muta costantemente, con nuove funzionalità che vengono aggiunte regolarmente.

1-js/03-code-quality/02-coding-style/article.md

Lines changed: 52 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
Il codice dovrebbe essere il più pulito e leggibile possibile.
44

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.
66

77
## Sintassi
88

@@ -42,7 +42,7 @@ Niente di quello che stiamo dicendo è scolpito sulla pietra. Sono solo delle pr
4242

4343
### Parentesi graffe
4444

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:
4646

4747
```js
4848
if (condition) {
@@ -56,35 +56,53 @@ Un caso limite è un costrutto con una singola linea. Dovremmo comunque usare le
5656

5757
Qui ci sono un paio di varianti, cosi potete giudicare voi stessi:
5858

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:
6060
```js
6161
if (n < 0) *!*{*/!*alert(`Power ${n} is not supported`);*!*}*/!*
6262
```
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:
6464
```js
6565
if (n < 0)
6666
alert(`Power ${n} is not supported`);
6767
```
68-
3. 😏 One line without braces - acceptable, if it's short:
68+
3. 😏 In una singola riga senza parantesi -- accettabile, se l'istruzione è semplice:
6969
```js
7070
if (n < 0) alert(`Power ${n} is not supported`);
7171
```
72-
4. 😃 The best variant:
72+
4. 😃 La variante migliore:
7373
```js
7474
if (n < 0) {
7575
alert(`Power ${n} is not supported`);
7676
}
7777
```
7878
79-
For a very brief code, one line is allowed, e.g. `if (cond) return null`. 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) return null`.
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) return null`. Ma un blocco di codice risulta essere molto più leggibile.
8480
8581
### Lunghezza della riga
8682
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+
```
88106
89107
La lunghezza massima dovrebbe essere accordata a livello di team. Solitamente tra gli 80-120 caratteri.
90108
@@ -98,7 +116,7 @@ Ci sono due tipi di indentazione:
98116
99117
Un vantaggio degli spazi contro i tabs è che gli spazi permettono configurazioni più flessibili.
100118
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:
102120
103121
```js no-beautify
104122
show(parameters,
@@ -131,15 +149,15 @@ Ci sono due tipi di indentazione:
131149
132150
### Punto e virgola
133151
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.
135153
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.
137155
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.
139157
140158
### Livelli di annidamento
141159
142-
Nel codice vanno evitati elevati liveeli di annidamento.
160+
Nel codice vanno evitati elevati livelli di annidamento.
143161
144162
Qualche volta torna utile la direttiva ["continue"](info:while-for#continue) per evitare annidamenti extra.
145163
@@ -253,17 +271,17 @@ Se state scrivendo molte funzioni "ausiliarie", ci sono tre modi per organizzarl
253271
```
254272
3. Mix: una funzione viene dichiarata nel punto in cui viene utilizzata la prima volta.
255273
256-
Nella maggioranza dei casi si preferisce la seconda opzione.
274+
Nella maggior parte dei casi si preferisce la seconda opzione.
257275
258276
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.
259277
260-
## Guida di stile
278+
## Style guide
261279
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.
263281
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.
265283
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.
267285
268286
Alcune delle scelte più popolari:
269287
@@ -275,7 +293,7 @@ Alcune delle scelte più popolari:
275293
276294
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.
277295
278-
## Pulitori automatizzati
296+
## Linter
279297
280298
I linters sono strumenti che controllano automaticamente lo stile del codice e vi danno consigli su come sistemarlo.
281299
@@ -287,16 +305,16 @@ Alcuni fra i linter più conosciuti:
287305
- [JSHint](http://www.jshint.com/) -- molte più opzioni di JSLint.
288306
- [ESLint](http://eslint.org/) -- il più recente.
289307
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/).
291309
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.
293311
294-
Ad esempio, per ESLint dovreste seguire quanto segue:
312+
Ad esempio, per poter utilizzare ESLint è sufficiente:
295313
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.
300318
301319
Qui un esempio di di un file `.eslintrc`:
302320
@@ -317,14 +335,14 @@ Qui un esempio di di un file `.eslintrc`:
317335
318336
La direttiva `"extends"` indica che la configurazione è basata sulla lista dei setting "eslint:recommended". Dopodiché potremo specificare il nostro stile personale.
319337
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.
321339
322340
Molti IDE hanno dei linter integrati, che sono comodi ma non sono editabili come ESLint.
323341
324342
## Riepilogo
325343
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.
327345
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.
329347
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.

1-js/03-code-quality/02-coding-style/code-style.svg

Lines changed: 1 addition & 1 deletion
Loading

1-js/03-code-quality/03-comments/article.md

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Commenti
22

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 singola riga: ed iniziano con `//` oppure multilinea: `/* ... */`.
44

55
Normalmente li utilizziamo per descrivere come e perché funziona il codice.
66

@@ -20,11 +20,11 @@ code;
2020

2121
Nel buon codice la quantità di commenti "esplicativi" dovrebbe essere minima. In realtà il codice dovrebbe essere facile da comprendere anche senza.
2222

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".
2424

2525
### Ricetta: raccogliere in una funzione
2626

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:
2828

2929
```js
3030
function showPrimes(n) {
@@ -65,7 +65,7 @@ function isPrime(n) {
6565
}
6666
```
6767

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*.
6969

7070
### Ricetta: creare funzioni
7171

@@ -79,7 +79,7 @@ for(let i = 0; i < 10; i++) {
7979
add(drop, glass);
8080
}
8181

82-
// qui aggiungiamo della spremuta (juice)
82+
// qui aggiungiamo della spremuta
8383
for(let t = 0; t < 3; t++) {
8484
let tomato = getTomato();
8585
examine(tomato);
@@ -111,16 +111,16 @@ function addJuice(container) {
111111
}
112112
```
113113

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.
115115

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.
117117

118118
## Buoni commenti
119119

120120
Quindi, solitamente i commenti esplicativi sono sbagliati. Quali sono allora i commenti giusti?
121121

122122
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.
124124

125125
Documentare l'utilizzo di una funzione
126126
: 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
141141

142142
Questi commenti ci consentono di capire lo scopo della funzione e come utilizzarla correttamente senza guardarne il codice.
143143

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.
145145

146146
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/>.
147147

@@ -151,20 +151,20 @@ Perché l'azione viene risolta in quel modo?
151151
Se ci sono diverse modalità di risolvere una determinata azione, perché si è scelta questa? Specialmente quando non risulta la scelta più ovvia.
152152

153153
Senza dei commenti si potrebbero generare le seguenti situazioni:
154-
1. Tu (o un tuo collega) apre il codice un 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.
157157

158158
Commenti che spiegano la soluzione sono fondamentali. Vi aiutano a sviluppare mantenendo sempre la strada corretta.
159159

160160
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 contro intuitive, vale certamente la pena commentarle.
162162

163163
## Riepilogo
164164

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.
166166

167-
I buoni commenti ci consentono di mantenere bene il codice, di poterci tornare dopo un 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.
168168

169169
**Commenti utili:**
170170

1-js/04-object-basics/03-garbage-collection/article.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ Semplicemente una valore "raggiungibile" deve essere accessibile o utilizzabile.
1414

1515
Ad esempio:
1616

17-
- Variabili locali e parametri correnti della funzione.
18-
- Variabili o parametri di altre funzioni che fanno però parte della catena delle chiamate annidate.
17+
- Funzioni in esecuzione, i loro parametri e le loro variabi locali.
18+
- Funzioni che fanno parte della catena delle chiamate annidate, i loro parametri e le loro variabi locali.
1919
- Variabili globali.
20-
- (ce ne sono altre)
20+
- (ce ne sono altri, anche interni)
2121

2222
Questi valori sono detti *radici*.
2323

1-js/04-object-basics/04-object-methods/7-calculator/_js.view/test.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@ describe("calculator", function() {
1515
afterEach(function() {
1616
prompt.restore();
1717
});
18+
19+
it('the read get two values and saves them as object properties', function () {
20+
assert.equal(calculator.a, 2);
21+
assert.equal(calculator.b, 3);
22+
});
1823

1924
it("the sum is 5", function() {
2025
assert.equal(calculator.sum(), 5);

0 commit comments

Comments
 (0)