Collega le parentesi graffe
Un gioco per aiutare a visualizzare gli effetti dello stile di posizionamento del tutore in Java
L'Obiettivo è essere Obiettivo
Diversi anni fa, ho escogitato un approccio creativo per aiutare a stabilire e concordare lo stile di codifica con un nuovo team su cui stavo lavorando. Eravamo nelle fasi iniziali della codifica di un nuovo progetto utilizzando il linguaggio di programmazione Java. Ho chiesto di decidere e concordare linee guida coerenti sullo stile del codice come squadra, in anticipo. Sapevo di dover trovare un argomento obiettivo e creativo per affrontare uno dei controversi dibattiti sullo stile del codice in Java: dove posizionare le parentesi graffe.
Scegliere la creatività al posto del conflitto
Nuotare controcorrente del “ma lo fanno tutti così” è difficile. È ancora più difficile quando una società di ricerca altamente rispettata timbra il proprio sigillo di approvazione su un particolare stile di codifica Java.
Per aiutarmi a presentare un'argomentazione obiettiva per un particolare stile di posizionamento dell'apparecchio, ho creato un gioco che ho chiamato "Collega l'apparecchio". Ho preso il codice da due classi di esempio che ho creato e le ho incollate in un mazzo Powerpoint e ho letteralmente disegnato delle linee sopra il codice per collegare le parentesi graffe iniziali e finali. Il gioco è stato ispirato da uno dei miei giochi d'infanzia preferiti: "Unisci i puntini".
La cosa grandiosa di "Unisci i puntini" è che le regole sono semplici e quasi tutti hanno giocato a scuola. Anche "Connect the Braces" è molto semplice. Basta collegare le parentesi graffe iniziali e finali di ogni ambito di codice tracciando una linea tra di esse. Facile.
Ho presentato il gioco alla squadra e, dopo che ho finito, nessuno ha risposto "ma tutti gli altri lo fanno in questo modo". Ciò ha confermato che almeno una squadra ha risposto bene a una discussione creativa sullo stile di posizionamento del tutore.
Automatizzare il gioco
Ho parlato al mio amico Vladimir Zakharov (Vlad) di questo gioco e di come ha disinnescato efficacemente quello che avevo precedentemente vissuto come un dibattito incendiario. Ho chiesto a Vlad se poteva scrivere del codice Java per visualizzare il gioco che gli avevo descritto. Vlad è più bravo di me nella programmazione visiva, quindi sapevo che avrebbe completato il codice più velocemente di me.
Vlad ha fatto qualcosa di ancora meglio del semplice collegamento delle parentesi graffe in un file sorgente. Ha anche colorato blocchi di codice con evidenziazione verde. Ciò ha l'ulteriore vantaggio di evidenziare visivamente gli spazi bianchi.
Le immagini nella sezione seguente sono state generate utilizzando la versione automatizzata di Vlad di "Connect the Braces" sul codice effettivo di Eclipse Collections Kata .
Avvertimento! Inizio partita!
Le seguenti immagini sono grafiche. Alcuni sviluppatori potrebbero trovarli inquietanti. Il codice sorgente effettivo è stato utilizzato nella creazione delle seguenti immagini. Qualsiasi immagine che non può essere nascosta dopo lo scorrimento oltre questo testo è di esclusiva responsabilità della persona che scorre, non dell'autore. Qualsiasi frutto o animale domestico che è stato danneggiato durante i due round "Connect the Braces" è stato il risultato di scelte di stile del codice, non dell'autore. Scegliere saggiamente. Sei stato avvertito!
Primo round: Fruit Enum
Secondo round: PetType Enum
Scegliere la chiarezza rispetto al disordine
So che probabilmente ho appena guadato un fiume in piena pieno di piranha affamati mentre indossavo un paio di calzoncini da bagno fatti di bistecca. Non sto cercando di convincere tutti che un particolare stile di posizionamento del tutore è "l'unico vero stile". C'è sicuramente uno stile che preferisco quando scrivo codice e devo sostenerlo in ogni progetto su cui lavoro. Trovo che quando presento la mia argomentazione usando questo gioco, possiamo avere una sana discussione sull'importanza dell'estetica, dello spazio bianco e del tracciamento visivo per la scansione e la leggibilità del codice.
Scelgo la chiarezza rispetto al disordine. Segnale su rumore. Scelgo lo stile a destra.
Per citare il mio amico Vlad:
Quando leggo il codice, di solito voglio vedere il "cosa", ad esempio, quali sono le responsabilità di questa classe, qual è il contratto di questo metodo, qual è la condizione per attivare questo ramo - o il "come", ad esempio, come fa questo metodo a fare ciò che fa, cosa succede se seguo questo ramo e così via. Avere visivamente separati cosa e come mi aiuta a scansionare il codice e focalizzare la mia attenzione su ciò che conta in quel momento.
Lo stile di formattazione con parentesi graffe verticali ha l'effetto naturale di separare nettamente il "cosa" dal "come" introducendo spazi bianchi tra la firma (definizioni di classi e metodi) e l'implementazione (variabili e codice). Le parentesi graffe iniziali e finali si trovano sempre nella stessa posizione orizzontale, con variabilità basata coerentemente sulla profondità degli ambiti nidificati (ad esempio istruzioni di controllo come if, for e while). Ti aspetti di vedere la base di una forma piramidale con le parentesi graffe, quindi puoi tranquillamente ignorare dove sono, perché sai dove sono. Questo stile è facile da implementare la formattazione automatica nel tuo IDE e da applicare in una build CheckStyle.
Nuoto controcorrente utilizzando questo stile di formattazione del tutore in Java da oltre 20 anni. Agli sviluppatori che devono leggere o lavorare nelle basi di codice formattate utilizzando lo stile di posizionamento delle parentesi graffe verticali a causa mia, ho qualcosa da dire.
Prego!
Un'eccezione alla regola
Scelgo uno stile di posizionamento delle parentesi graffe diverso durante la creazione di diapositive Powerpoint o testo per un libro con codice Java. Solo in questi due supporti di stampa, scelgo quasi sempre lo stile che favorisce meno righe di codice. Rompere il codice tra le pagine è indesiderabile. Questo è un compromesso dovuto ai limiti dello spazio verticale disponibile. Questo limite imposto non esiste nel codice che stai leggendo nel tuo IDE o in una sorgente di lettura del browser da un VCS come GitHub o GitLab dove lo scorrimento verticale funziona perfettamente.
Sette abitudini di programmazione inefficaci di molti programmatori
Pochi mesi dopo aver creato il gioco "Connect the Braces", mi sono imbattuto in un fantastico discorso di Kevlin Henney che presenta un'ottima argomentazione per un particolare stile di posizionamento del tutore, tra molti altri grandi punti che fa nel discorso sullo stile di codifica.
Quindi, quindi, quello che ti ho appena detto, nel caso te lo stessi chiedendo, sì, c'è un modo per determinare il modo corretto di allineare i tuoi apparecchi... obiettivamente.
Niente spoiler. Consiglio vivamente di guardare questo discorso. Attenzione, questo discorso potrebbe essere un'interruzione costruttiva per il tuo attuale stile di programmazione.
Un invito all'azione sullo stile del codice Java
Stiamo lasciando miliardi di righe di codice sorgente Java nei sistemi di controllo della versione per essere mantenute dai nostri sé futuri e dalle future generazioni di sviluppatori. Lo stile del codice ha un impatto diretto e sottile sulla chiarezza e sulla leggibilità. Non tutti leggono il codice alla stessa velocità. Potrebbero esserci problemi di accessibilità che dovresti discutere e considerare come una squadra. Tutti dovrebbero essere in grado di analizzare il codice alla fine leggendolo, indipendentemente dallo stile del codice. Se potessimo impiegare meno cicli separando il cosa dal come e trovando il codice che stiamo cercando, sarebbe una buona cosa.
Ecco le mie regole per creare uno stile di codifica accettabile in una squadra.
- Discuti con il tuo team sulle linee guida per lo stile del codice.
- Applica linee guida di stile del codice coerenti nel tuo progetto utilizzando regole di formattazione automatica codificate e personalizzate nel tuo IDE preferito.
- Esegui una build continua automatizzata che si interromperà in caso di commit di stile di codice incoerenti (ad esempio CheckStyle).
- Pubblica le tue linee guida sullo stile del codice nel tuo progetto VCS.
- Abbi il coraggio e prenditi il tempo per evolvere le tue linee guida sullo stile del codice quando scopri o impari qualcosa di nuovo.
Sentiti libero di usare il gioco Connect the Braces per aiutare a facilitare discussioni razionali e obiettive sullo stile del codice, specialmente per quanto riguarda le discussioni sullo stile di posizionamento delle parentesi graffe in Java. Se ti piace questo stile e vuoi vedere le impostazioni dello stile del codice che abbiamo utilizzato in IntelliJ IDEA per Eclipse Collections negli ultimi sette anni, vengono archiviate in GitHub qui .
Divertiti!
Sono il creatore e un Committer per il progetto Eclipse Collections OSS gestito dalla Eclipse Foundation . Eclipse Collections è aperta a contributi .

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































