JavaRush /Java Blog /Random-IT /IntelliJ IDEA: stile del codice e formattazione
Viacheslav
Livello 3

IntelliJ IDEA: stile del codice e formattazione

Pubblicato nel gruppo Random-IT
Gli strumenti moderni semplificano il processo di sviluppo. In particolare, è più semplice monitorare lo stile del proprio codice, cercando di minimizzarne la formattazione “non autorizzata”. In questa recensione, propongo di familiarizzare con gli strumenti che IntelliJ Idea IDE fornisce allo sviluppatore per rendere il codice piacevole da leggere e facile da comprendere.
IntelliJ IDEA: stile del codice e formattazione - 1

introduzione

Un linguaggio di programmazione è molto simile alla lingua parlata dalle persone. L'unica differenza è che si tratta di un linguaggio speciale che inizialmente viene utilizzato per comunicare con un computer per spiegargli cosa vogliamo da lui. Ma non può esserci comunicazione uno a uno con un computer. Anche quando hai iniziato a imparare un linguaggio di programmazione, hai guardato un libro o qualche risorsa educativa come JavaRush. E in questa fonte hai visto il codice che un computer capirà. Ma dovresti capirlo anche man mano che acquisisci conoscenza del linguaggio Java. Come in ogni linguaggio, la programmazione ha alcune regole per formare il codice. Ad esempio, scrivere con una recinzione nella società educata è considerato una cattiva educazione, e in Java chiamare un metodo con una lettera maiuscola è una grave violazione dello stile del codice. Le regole per la formattazione del codice Java sono formulate nel documento Java Code Convention . Inoltre, lo stile del codice può regolare dettagli più piccoli, come il rientro. E quando vengono utilizzati gli strumenti di controllo della versione, immagina l'intero incubo quando tutti salvano un file rientrato come scheda o rientrato come spazio. Come sarà per qualcuno che ha bisogno di controllare la modifica in un solo metodo, ma l'intero file verrà modificato a causa della correzione degli spazi nelle schede o viceversa. Naturalmente, come per il linguaggio comune, lo stile può variare a seconda di dove viene utilizzato. Ad esempio, su Internet puoi trovare Google Java Style Guide o Twitter Java Style Guide . Per questo articolo di revisione, avremo bisogno di un soggetto di prova. Usiamo il servizio del sistema di compilazione del progetto Gradle. Ci consentirà di creare un nuovo progetto utilizzando un modello per un avvio rapido. Gradle ha un ottimo plugin: Build Init Plugin . Andiamo nella nuova directory ed eseguiamo il comando lì: gradle init --type java-application Successivamente, avvia IntelliJ Idea. Se vedi una finestra con un progetto già aperto (vedrai l'editor del codice, l'albero della struttura del progetto), chiudi questo progetto utilizzando File -< Close Project. Ora nella finestra di benvenuto eseguiremo "Import Project"e importeremo il nostro nuovo progetto. Durante l'importazione, impostare il flag "Use autoimport". Scopriamo se è possibile in qualche modo semplificare la vita con l'aiuto dei moderni strumenti di sviluppo.

Codice di formattazione in Idea

Dopo aver importato il progetto, premi la combinazione di tasti Ctrl+Ne vai alla classe AppTest. Questa classe è la classe di test predefinita. Sembra questo:
import org.junit.Test;
import static org.junit.Assert.*;

public class AppTest {
    @Test public void testAppHasAGreeting() {
        App classUnderTest = new App();
        assertNotNull("app should have a greeting", classUnderTest.getGreeting());
    }
}
Cosa attira immediatamente la tua attenzione qui? Un'annotazione con una dichiarazione di metodo su una riga, che sembra brutta, sono d'accordo. Come risolvere questo problema? IntelliJ Idea ha una sezione di menu "Code"per varie manipolazioni del codice. Una di queste manipolazioni è "Reformat Code"una combinazione di tasti Ctrl + L. Dopo l'applicazione, l'annotazione sarà su una riga e il metodo stesso su un'altra. Vale subito la pena notare che questa operazione viene eseguita su una sezione selezionata di codice . E se non esiste nulla del genere, l'operazione di formattazione verrà eseguita su tutto il contenuto. Aggiungiamo ora un nuovo metodo di test:
@Test
public void testSummOfOddNumbers() {
	List<Integer> data = Arrays.asList(1, 4, 2, 3, 6, 7, 9);
	Integer result = data.stream().filter(number -> number % 2 == 0).reduce((n1, n2) -> n1 + n2).get();
	assertThat(result, is(12));
}
E due importazioni:
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
Come puoi vedere, l'operazione su Stream è posizionata su una riga. E se volessimo assicurarci che i metodi le cui chiamate sono concatenate siano sempre divisi in nuove righe in un punto? Da un lato, possiamo farlo manualmente. Ma ricorda che vogliamo che tutto funzioni per noi. Dopotutto, di tanto in tanto lo dimenticheremo e il formato del codice diventerà diverso ovunque, e questo non va bene. Si scopre che è necessario modificare la regola in base alla quale Idea esegue la formattazione. Seleziona la voce Idea nel menu File -> Settings(o clicca su Ctrl + Alt + S). Nel campo di ricerca nella finestra delle impostazioni, scrivi "Stile codice". Nella sezione Stile codice è possibile specificare le impostazioni non solo per Java. Ma ora siamo interessati a Java. Come puoi vedere, le impostazioni sono divise in diverse schede. La cosa più utile è che il risultato della modifica verrà mostrato in un esempio sul lato destro della finestra:
IntelliJ IDEA: stile del codice e formattazione - 2
Come puoi vedere nello screenshot, possiamo specificare l'impostazione per "Chiamate di metodi concatenati" come "wrap sempre", ovvero sempre diviso per le chiamate ai metodi uniti. Ora clicchiamo nuovamente sulla formattazione nel test e vediamo che funziona davvero! Ma a volte capita che sia necessario formattare del codice al di fuori delle regole generali di formattazione. Impostiamo la formattazione come segue:
IntelliJ IDEA: stile del codice e formattazione - 3
Per abilitare la disabilitazione della formattazione, il supporto per disabilitare gli indicatori di formattazione deve essere abilitato nella sezione Stile codice:
IntelliJ IDEA: stile del codice e formattazione - 4
Ora possiamo modificare il codice del nostro test in modo che la sua formattazione rimanga nella forma in cui lo scriviamo:
@Test
public void testSummOfOddNumbers() {
	List<Integer> data = Arrays.asList(1, 4, 2, 3, 6, 7, 9);
	// @formatter:off
	Integer result = data.stream().filter(number -> number % 2 == 0)
                             .reduce((n1, n2) -> n1 + n2)
                             .get();
	assertThat(result, is(12));
	// @formatter:on
}
Sì, se noti: quando premi Tab, Idea lo interpreta come spazi per te (comportamento predefinito). Ma puoi cambiarlo lì in Code Style:
IntelliJ IDEA: stile del codice e formattazione - 5
Come puoi vedere, esiste un'enorme varietà di impostazioni. Puoi leggere ulteriori informazioni sulle impostazioni dello stile del codice qui: " Aiuto Idea: Stile del codice ". C'è un'altra importante funzionalità di formattazione: la formattazione di importazione. Viene eseguito separatamente e viene chiamato "Optimize Imports"e si trova nella voce di menu Code -> Optimize Imports(Ctrl + Alt + O). L'ottimizzazione dell'importazione rimuove le importazioni non necessarie e le inserisce nell'ordine corretto in base alle impostazioni nella scheda Importazioni delle impostazioni Stile codice per Java. Inoltre, se vuoi che la formattazione avvenga automaticamente, la buona notizia è che puoi farlo utilizzando il plugin Salva azioni .

Distribuire le impostazioni a un team

Ottimo, abbiamo visto sopra che possiamo personalizzare lo stile di formattazione in base alle nostre esigenze. Ma come può essere utilizzato questo stile in una squadra? Molto semplice. Ci sono diverse opzioni. Il più semplice è salvare il diagramma. Apri le impostazioni di Idea tramite File -> Impostazioni (o premi Ctrl + Alt + S). Nella sezione Stile Codice possiamo vedere la scritta Schema. Questo è il nostro schema di formattazione. Per impostazione predefinita viene specificato uno schema con il nome Default e accanto ad esso c'è l'annotazione IDE: ciò significa che questa impostazione è solo per il nostro IDE e non influisce su nessuno. Per creare uno schema “personalizzato”, fare clic sul pulsante a destra per creare un “duplicato” e dargli un nome, ad esempio: JavaRush
IntelliJ IDEA: stile del codice e formattazione - 6
Successivamente potremo importare o esportare le impostazioni:
IntelliJ IDEA: stile del codice e formattazione - 7
Un'altra opzione è importare le impostazioni di importazione di Idea:
IntelliJ IDEA: stile del codice e formattazione - 8
La terza opzione è il repository delle impostazioni. Per ulteriori informazioni sull'utilizzo del repository delle impostazioni, consultare la documentazione "Guida di IntelliJ Idea: repository delle impostazioni ". Anche riguardo alla distribuzione di un unico stile nel team, non posso fare a meno di notare il buon supporto per gli stili da parte dell'IDE Eclipse. Per fare ciò, dovrai installare un plugin separato: apri le impostazioni di Idea tramite File -> Impostazioni (Ctrl + Alt + S) e vai alla sezione Plugin. Per cercare nuovi plugin, fare clic sul pulsante "Browse Repositories", dopodiché troveremo il plugin Eclipse Code Formatter nella finestra di ricerca.
IntelliJ IDEA: stile del codice e formattazione - 9
Ora, dopo l'installazione, è necessario riavviare Idea: questa è una procedura standard. Successivamente, nello stesso posto, nelle impostazioni di Idea, troveremo una nuova sezione: "Eclipse Code Formatter". Un esempio di file di formato per Eclipse può essere trovato qui . Apparirà qualcosa del genere:
IntelliJ IDEA: stile del codice e formattazione - 10

Requisiti di serraggio

Oltre agli strumenti Idea, puoi anche utilizzare i plugin del sistema di build per restringere i requisiti. Non c'è modo di verificare che una persona abbia utilizzato la formattazione. Se ci sono 5 persone nella squadra, è ancora possibile. Se l’azienda ha 100 persone, non è realistico. Sì, anche cinque saranno difficili da tenere traccia. E perché perdere tempo con questo? È molto più semplice vietare la raccolta di un progetto se vengono violate determinate regole. In realtà, questo è un argomento completamente separato chiamato "Ispeziona codice". Ai fini di questo articolo, voglio solo mostrare come funziona. Uno dei plugin più comuni per Gradle (poiché raccoglie il nostro progetto, se ricordi) è pmd . Per abilitarlo, basta andare allo script build del nostro progetto gradle (il file build.gradle nella root del nostro progetto) e specificare pmd accanto al resto dei plugin:

plugins {
    // Apply the java plugin to add support for Java
    id 'java'
    // Check source code
    id 'pmd'
    // Apply the application plugin to add support for building an application
    id 'application'
}
Ora possiamo impostare impostazioni più dettagliate lì:

pmd {
    ignoreFailures = false
    pmdTest.enabled = true
    ruleSets = [
            'java-basic',
            'java-braces',
            'java-clone',
            'java-codesize',
            'java-comments',
            'java-controversial',
            'java-coupling',
            'java-design',
            'java-empty',
            'java-finalizers',
            'java-imports',
            'java-optimizations',
            'java-strictexception',
            'java-strings',
            'java-typeresolution',
            'java-unnecessary',
            'java-unusedcode'
    ]
}
Anche nel nostro progetto non va più tutto bene. Eseguiamo gradle build e otteniamo un errore. La cosa bella è che durante l'assemblaggio viene generato un report. E se ci sono errori, riceveremo un messaggio come:

BUILD FAILED in 35s
6 actionable tasks: 6 executed
7 PMD rule violations were found. See the report at: file:///C:/_study/codestyle/build/reports/pmd/main.html
Se andiamo al rapporto, vedremo qualcosa del tipo:
IntelliJ IDEA: stile del codice e formattazione - 11
Inoltre, nella colonna Problema è presente un collegamento alla descrizione del problema sul sito web del plugin pmd. Ad esempio, per l'errore "headerCommentRequirement Required" il collegamento va qui: pmd - CommentRequired . Questo errore ci suggerisce che la nostra classe non ha un JavaDoc. La presenza di JavaDoc sulle classi può essere configurata utilizzando i modelli:
IntelliJ IDEA: stile del codice e formattazione - 12
E specifica il contenuto per l'intestazione del file:
IntelliJ IDEA: stile del codice e formattazione - 13
Successivamente, possiamo trasformare il commento sopra la classe App in un JavaDoc e vedere con una nuova Build che l'errore è scomparso.

Linea di fondo

Lo stile del codice è importante per un progetto produttivo. Un bel codice scritto secondo le regole generali è la garanzia che i tuoi colleghi lo capiranno più facilmente e rapidamente e non diranno un paio di cose affettuose su di te. Con i moderni strumenti di sviluppo, attenersi alle regole non è così difficile. Spero che questa recensione abbia dimostrato che è davvero così. Bene, come al solito, un po' di materiale sull'argomento: #Viacheslav
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION