Skip to content

Commit dd5dd39

Browse files
authored
Merge pull request #169 from longo-andrea/feature/coding-style
Coding Style
2 parents aab5ba7 + f36f555 commit dd5dd39

File tree

1 file changed

+52
-34
lines changed

1 file changed

+52
-34
lines changed

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.

0 commit comments

Comments
 (0)