CodeGym/Java blogg/Slumpmässig/IntelliJ IDEA: Kodningsstil och kodformatering
John Squirrels
Nivå
San Francisco

IntelliJ IDEA: Kodningsstil och kodformatering

Publicerad i gruppen
Ett programmeringsspråk är väldigt likt ett talat språk. Den enda skillnaden är att det är ett speciellt språk vars huvudsakliga syfte är att underlätta kommunikationen med en dator för att förklara för datorn vad vi vill att den ska göra. Men du kan inte ha ett personligt samtal med en dator. När du började lära dig ett programmeringsspråk tittade du på böcker eller någon pedagogisk resurs som CodeGym. Och den här resursen visade dig kod som datorn förstår. Men du bör också förstå det när du lär dig om Java-språket. Som med alla språk har vissa formateringskonventioner antagits i programmering. Till exempel, i ett artigt samhälle, skulle att skriva SÅ här anses vara dåligt uppförande. Och i Java är att börja en metods namn med stor bokstav ett grovt brott mot kodningskonventioner. IntelliJ IDEA: Kodstil och kodformatering - 1Reglerna för Java-kod finns i dokumentet Code Conventions for the Java Programming Language . Kodningskonventioner kan också reglera mindre detaljer, såsom indrag. Föreställ dig den yttersta mardröm som versionskontroll skulle bli om indraget var inkonsekvent, vissa personer använder tabbar och andra använder mellanslag. Hur skulle det vara för någon som behöver checka in en fix på bara en metod, men tycker att hela filen har ändrats på grund av skillnader i mellanslag och flikar? Naturligtvis, som med vanligt språk, kan konventioner ändras beroende på var ett språk används. Till exempel kan du hitta Googles Java Style Guide och Twitter Java Style Guide på webbens stora vidder. För denna recension behöver vi en testperson. Vi kommer att använda Gradle bygga automationssystem. Det låter oss komma igång snabbt genom att skapa ett nytt projekt från en mall. Gradle har ett bra plugin: Build Init Plugin . Låt oss gå till en ny katalog och köra följande kommando där: gradle init --type java-application Efter det, starta IntelliJ IDEA. Om du ser ett fönster med ett öppet projekt (dvs. du ser kodredigeraren och projektträdet), stäng det här projektet med File -> Close Project. Kör nu " " i välkomstfönstret Import Projectoch importera vårt nya projekt. När du importerar, ställ in Use autoimportkryssrutan " ". Låt oss ta reda på om vi kan använda toppmoderna utvecklingsverktyg för att på något sätt förenkla livet.

Kodformatering i IDEA

Efter att ha importerat projektet, tryck på Ctrl+N och gå till AppTestklassen. Detta är standardtestklassen. Det ser ut så här:
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());
    }
}
Vad får du omedelbart i ögonen? En anteckning på samma linje som en metoddeklaration, som ser ful ut, eller hur? Hur fixar man detta? IntelliJ IDEA har en " Code" menypost för olika kodmanipulationer. En sådan manipulation är " Reformat Code", som du kan använda med Ctrl+L. När du har gjort detta kommer anteckningen att finnas på en rad och metoddeklarationen på en annan. Det är värt att omedelbart notera att denna operation utförs på den för närvarande valda koden . Om det inte finns något val utförs formateringsoperationen på allt. Låt oss nu lägga till en ny testmetod:
@Test
public void testSumOfOddNumbers() {
	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));
}
Och två importer:
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
Som du kan se är operationen på Stream på en linje. Men vad händer om vi vill se till att de kedjade metodanropen alltid delas upp i nya linjer hos varje periodoperatör? Vi skulle kunna göra detta manuellt. Men kom ihåg att vi vill att allt ska ske automatiskt. Vi kommer verkligen att glömma det manuella steget då och då, och då kommer vi att sluta med olika formatering överallt, och det är inte bra. Så vi måste redigera regeln som IDEA använder för formatering. VäljaFile -> Settingsi IDÉ-menyn (eller tryck på Ctrl+Alt+S). Ange "Kodstil" i sökfältet i inställningsfönstret. I avsnittet "Kodstil" kan du ange inställningar för fler språk än bara Java. Men Java är det vi är intresserade av just nu. Som du kan se är inställningarna uppdelade i flera flikar. En superanvändbar funktion är att ett exempel på operationen visas i den högra delen av fönstret: IntelliJ IDEA: Kodningsstil och kodformatering - 2Skärmdumpen visar att vi kan ställa in "Chained method calls" till "wrap always", dvs alltid dela upp chained method calls i separata rader. Klicka nu på formateringsknappen igen i testklassen så ser vi att det verkligen fungerar! Men ibland måste du formatera kod utanför standardformateringsreglerna. Ställ in formateringen enligt följande: IntelliJ IDEA: Kodningsstil och kodformatering - 3För att förhindra formatering, i avsnittet "Kodstil", aktivera formateringsmarkörer: IntelliJ IDEA: Kodningsstil och kodformatering - 4Nu kan vi ändra vår testklass så att dess kod inte formateras om:
@Test
public void testSumOfOddNumbers() {
	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
}
Du kanske har märkt att när du trycker på Tabb tolkar IDEA det som ett mellanslag (detta är standardbeteendet). Men du kan ändra detta i Code Styleavsnittet " ": IntelliJ IDEA: Kodningsstil och kodformatering - 5Som du kan se finns det många inställningar där. Du kan läsa mer information om " Code style" inställningar här: " IDEA Help: Code Style ". Det finns en annan viktig formateringsfunktion: formateringsimporter. Denna operation körs separat och kallas " " Optimize Imports. Den finns under Code -> Optimize Imports(Ctrl+Alt+O). Att optimera importer tar bort onödiga importer och ordnar importer i rätt ordning enligt inställningarna på Importsfliken " " i Code Styleinställningarna för Java. Om du vill att denna formatering ska ske automatiskt finns det goda nyheter:Plugin för Spara åtgärder .

Distribuera inställningar i ett kommando

Vi såg ovan att du kan anpassa din formateringsstil som du vill. Men hur använder man denna stil inom ett team? Väldigt lätt. Det finns flera alternativ. Det enklaste är att spara ett kodstilsschema. Öppna IDEA-inställningarna med File -> Settings(eller tryck på Ctrl+Alt+S). I Code Styleavsnittet " " kan vi se "schema". Detta är vårt formateringsschema. Som standard används "Default"-schemat och är märkt "IDE", vilket betyder att den här inställningen endast gäller för vår IDE - den påverkar inte någon annan. För att göra ett "anpassat" schema, använd knappen till höger för att göra en kopia och ge den ett namn, till exempel: CodeGym IntelliJ IDEA: Kodningsstil och kodformatering - 6Sedan kan vi importera eller exportera inställningarna: IntelliJ IDEA: Kodstil och kodformatering - 7 Ett annat alternativ är att importera IDEA-inställningar: IntelliJ IDEA: Kodningsstil och kodformatering - 8Ett tredje alternativ är Settings Repository. För att använda Settings Repository, se IntelliJ IDEA Help-dokumentationen för mer information på följande länk: Settings Repository ". På tal om att driva en enhetlig stil i ett team kan jag inte heller låta bli att nämna det goda stödet för stilar från Eclipse IDE. För att göra detta måste du installera en separat plugin: öppna IDEA-inställningar via Arkiv -> Inställningar (Ctrl+Alt+S) och gå till avsnittet "Plugins". För att hitta nya plugins, klicka på knappen " ". Browse RepositoriesSedan hitta plugin-programmet Eclipse Code Formatter i sökfönstret. IntelliJ IDEA: Kodningsstil och kodformatering - 9Efter att du har installerat det måste du starta om IDEA — detta är standardprocedur. Nu är allt klart. Det finns ett nytt avsnitt i IDEA-inställningarna: "Eclipse Code Formatter".. Det kommer att se ut ungefär så här: IntelliJ IDEA: Kodningsstil och kodformatering - 10

Skärpta krav

Förutom IDEA-verktyg kan du också använda plugins för byggautomation för att skärpa kraven. Det går inte att manuellt kontrollera att någon har använt korrekt formatering. Kanske kan du med 5 personer i ett team. Men med 100 personer på ett företag är det inte realistiskt. Och även fem kommer att vara svåra att spåra. Och varför slösa din tid på något av detta? Det skulle vara mycket lättare att förhindra att projektet byggs om reglerna bryts. I själva verket är detta ett helt separat ämne som heter "Inspektera kod". I den här artikeln vill jag bara visa dig hur det fungerar. Ett av de mest populära Gradle-plugin-programmen (eftersom det bygger vårt projekt, kommer du ihåg) är pmd. För att aktivera det, gå bara till vårt Gradle-projekts byggskript (filen build.gradle i roten av vårt projekt) och lägg till pmd till det bredvid resten av plugins:
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'
}
Nu kan vi ange mer detaljerade inställningar på samma plats:
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'
    ]
}
Även vårt projekt är trasigt nu. Kör gradle buildoch vi får ett fel. Det fina är att en rapport genereras under bygget. Och om det finns fel får vi ett meddelande så här:
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
När vi går till rapporten ser vi ungefär så här: IntelliJ IDEA: Kodningsstil och kodformatering - 11Dessutom Problemger kolumnen " " en länk till en beskrivning av problemet på pmd-pluginens webbplats. Till exempel, för headerCommentRequirement Requiredfelet " " går länken hit: pmd — CommentRequired . Detta fel är en antydan om att vår klass inte har ett JavaDoc. Vi kan använda mallar för att konfigurera ett JavaDoc ovanför klasser: IntelliJ IDEA: Kodningsstil och kodformatering - 12Och specificera innehållet för File Header: IntelliJ IDEA: Kodningsstil och kodformatering - 13Efter det kan vi förvandla kommentaren ovanför Appklassen till ett JavaDoc och se att felet är borta i ett nytt bygge.

Poängen

Kodstil är viktigt för att maximera produktiviteten i ett projekt. Vacker kod skriven enligt delade regler garanterar att dina medarbetare lättare och snabbare kommer att förstå den och inte ger dig en öron av kritik. Med moderna utvecklingsverktyg är det inte så svårt att hålla sig till stilregler. Jag hoppas att denna recension har bevisat för dig att detta är sant. Enligt traditionen, här är lite extra material om ämnet:
Kommentarer
  • Populär
  • Ny
  • Gammal
Du måste vara inloggad för att lämna en kommentar
Den här sidan har inga kommentarer än