JavaRush /Java Blog /Random-TK /IntelliJ IDEA: Kod stili we formaty
Viacheslav
Dereje

IntelliJ IDEA: Kod stili we formaty

Toparda çap edildi
Döwrebap gurallar ösüş prosesini aňsatlaşdyrýar. Hususan-da, “rugsatsyz” formatlamany azaltjak bolup, koduňyzyň stiline gözegçilik etmek has aňsat. Bu gözden geçirilişde, IntelliJ Idea IDE koduny okamak üçin ýakymly we düşünmek aňsat bolar ýaly döredijä haýsy gurallar bilen tanyşmagy teklip edýärin.
IntelliJ IDEA: kod stili we formatirleme - 1

Giriş

Programmirleme dili adamlaryň gürleýän diline gaty meňzeýär. Onlyeke-täk tapawut, bu ilki bilen isleýän zadymyzy düşündirmek üçin kompýuter bilen aragatnaşyk saklamak üçin ulanylýan ýörite dil. Emma kompýuter bilen ýeke-ýekeden aragatnaşyk bolup bilmez. Programmirleme dilini öwrenip başlanyňyzda-da, bir kitaba ýa-da JavaRush ýaly bilim çeşmesine göz aýladyňyz. Bu çeşmede kompýuteriň düşünjek koduny gördüň. Javaöne Java dilini bilýän wagtyňyz oňa düşünmeli. Islendik dilde bolşy ýaly, programmirlemekde kod döretmek üçin käbir düzgünler bar. Mysal üçin, sypaýy jemgyýetde haýat bilen ýazmak erbet edep hasaplanýar we Java-da baş harp bilen usuly çagyrmak kod stiliniň gödek bozulmagydyr. Java koduny formatlamagyň düzgünleri Java Code Convention resminamasynda düzülendir . Mundan başga-da, kod stili indentasiýa ýaly kiçi jikme-jiklikleri sazlap biler. Wersiýa gözegçilik gurallary ulanylanda, her kim bir tablisa ýa-da boşluk hökmünde ýazylan faýly ýatda saklasa, bütin düýş görmegi göz öňüne getiriň. Üýtgetmäni diňe bir usuldan barlamaly biri üçin nähili bolar, ýöne boşluklaryň belliklere düzedilmegi ýa-da tersine, tutuş faýl üýtgediler. Elbetde, adaty dilde bolşy ýaly, stil nirede ulanylýandygyna baglylykda üýtgäp biler. Mysal üçin, internetde Google Java Style Gollanmasyny ýa-da Twitter Java Style Gollanmasyny tapyp bilersiňiz . Bu gözden geçiriş makalasy üçin synag temasy gerek bolar. “Gradle” taslama gurluşyk ulgamynyň hyzmatyny ulanalyň. Çalt başlamak üçin şablon ulanyp, täze taslama döretmäge mümkinçilik berer. Gradle-de ajaýyp bir plugin bar: Init Plugin-i guruň . Geliň, täze kataloga geçeliň we buýrugy ýerine ýetireliň: gradle init --type java-application Ondan soň IntelliJ Idea-ny işe giriziň. Eger eýýäm açyk taslama bolan penjiräni görseňiz (kod redaktoryny, taslama gurluşy agajyny görersiňiz), bu taslamany ulanyp ýapyň File -< Close Project. Indi hoş geldiňiz penjiresinde "Import Project"täze taslamamyzy ýerine ýetireris we import ederis. Import edilende baýdagy belläň "Use autoimport". Döwrebap ösüş gurallarynyň kömegi bilen durmuşy nädip ýönekeýleşdirip boljakdygyny anyklalyň.

Ideýada kod formaty

Taslamany import edeniňizden soň, düwmäniň kombinasiýasyny basyň Ctrl+Nwe synpa giriň AppTest. Bu synp deslapky synag synpydyr. Görnüşi ýaly:
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());
    }
}
Bu ýerde derrew gözüňi näme alýar? Ugaramaz görünýän bir setirde usul deklarasiýasy bilen düşündiriş razy. Muny nädip düzetmeli? "Code"IntelliJ Idea-da dürli kod manipulýasiýalary üçin menýu bölümi bar . Şeýle manipulýasiýalaryň biri "Reformat Code"esasy utgaşykdyr Ctrl + L. Programmadan soň düşündiriş bir setirde, usulyň özi başga bir setirde bolar. Bu amalyň koduň saýlanan bölüminde ýerine ýetirilendigini derrew bellemelidiris . Şeýle zat ýok bolsa, formatirleme amaly ähli mazmunda ýerine ýetiriler. Indi täze synag usulyny goşalyň:
@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));
}
Iki import:
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
Görşüňiz ýaly, Akymdaky amal bir setirde ýerleşdirildi. Callöne jaňlary zynjyrlanan usullaryň elmydama täze setirlere bölünýändigine göz ýetirmek islesek näme etmeli? Bir tarapdan, muny el bilen edip bileris. Everythingöne hemme zadyň biziň üçin işlemegini isleýändigimizi ýadyňyzdan çykarmaň. Galyberse-de, wagtal-wagtal ýatdan çykararys we kod formaty hemme ýerde üýtgeşik bolar we bu gowy däl. Görnüşi ýaly, “Idea” formatirlemegiň düzgünini redaktirlemeli. Menýudaky ideýa elementini saýlaň File -> Settings(ýa-da basyň Ctrl + Alt + S). Sazlamalar penjiresindäki gözleg meýdanyna “Kod stili” ýazyň. Kod stili bölüminde diňe Java üçin däl sazlamalary kesgitlemek bolýar. Nowöne indi Java bilen gyzyklanýarys. Görşüňiz ýaly, sazlamalar birnäçe goýmalara bölünýär. Iň peýdaly zat, üýtgeşmäniň netijesi penjiräniň sag tarapyndaky mysalda görkeziler:
IntelliJ IDEA: Kod stili we formatirleme - 2
Ekranyň suratyndan görnüşi ýaly, "Zynjyrly usul jaňlary" sazlamasyny "elmydama dolamak" diýip kesgitläp bileris. birleşdirilen usul jaňlary üçin elmydama bölün. Indi synagda formatirlemäni ýene bir gezek basalyň we hakykatdanam işleýändigini göreliň! Sometimesöne käwagt umumy formatlaşdyryş düzgünleriniň daşyndaky käbir kodlary formatlamagyň zerurlygy ýüze çykýar. Formatirlemegi aşakdaky ýaly düzeliň:
IntelliJ IDEA: Kod stili we formaty - 3
Formatirlemäni ýapmak üçin, Kod stili bölüminde formatirleme belliklerini öçürmek üçin goldaw açyk bolmaly:
IntelliJ IDEA: Kod stili we formaty - 4
Indi synagymyzyň koduny üýtgedip bileris, onuň formatirlemesi ýazýan görnüşimizde galar:
@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
}
Hawa, üns berseňiz: Tab-a basanyňyzda, ideýa ony size boşluk hökmünde düşündirýär (adaty hereket). Emma muny kod stilinde üýtgedip bilersiňiz:
IntelliJ IDEA: Kod stili we formaty - 5
Görşüňiz ýaly, dürli sazlamalar bar. Kod stiliniň sazlamalary barada has giňişleýin maglumaty şu ýerden okap bilersiňiz: " Pikir kömegi: kod stili ". Anotherene bir möhüm formatirleme aýratynlygy bar - import formatirlemesi. Aýry-aýry ýerine ýetirilýär we "Optimize Imports"menýu elementinde ýerleşýär Code -> Optimize Imports(Ctrl + Alt + O). Import optimizasiýasy gereksiz importlary aýyrýar we Java sazlamalary üçin Kod stiliniň import sahypasyndaky sazlamalara laýyklykda dogry tertibe salýar. Mundan başga-da, formatirlemegiň awtomatiki ýagdaýda bolmagyny isleseňiz, gowy habar, “Hereketleri ýatda saklamak” plaginini ulanyp bilersiňiz .

Bir topara sazlamalary paýlamak

Ajaýyp, formatirleme stilini bize laýyklaşdyryp biljekdigimizi ýokarda gördük. Thisöne bu stili bir toparda nädip ulanyp bolar? Örän ýönekeý. Birnäçe wariant bar. Iň aňsat diagrammany ýatda saklamakdyr. Pikir sazlamalaryny Faýl -> Sazlamalar arkaly açyň (ýa-da Ctrl + Alt + S basyň). Kod stili bölüminde ýazgy shemasyny görüp bileris. Bu biziň formatirleme shemamyz. Düzgüne görä, shema Dymmak ady bilen görkezilýär we gapdalynda IDE düşündirişi bar: bu sazlamanyň diňe IDE üçin bolandygyny we hiç kime täsir etmeýändigini aňladýar. “Customörite” shema döretmek üçin, “köpeltmek” üçin sag tarapdaky düwmä basyň we oňa at beriň, mysal üçin: JavaRush
IntelliJ IDEA: Kod stili we formaty - 6
Ondan soň sazlamalary import edip ýa-da eksport edip bileris:
IntelliJ IDEA: Kod stili we formaty - 7
Başga bir wariant, import ideýa sazlamalaryny import etmek:
IntelliJ IDEA: Kod stili we formaty - 8
Üçünji wariant, Sazlamalar ammary. Sazlamalar ammaryny ulanmak barada has giňişleýin maglumat üçin "IntelliJ Idea Kömek: Sazlamalar ammary " resminamalaryna serediň . Toparda ýekeje stili paýlamak mowzugynda, Eclipse IDE-den stilleriň gowy goldawyny belläp bilemok. Munuň üçin aýratyn bir plugin gurmaly bolarsyňyz: Faýl -> Sazlamalar (Ctrl + Alt + S) arkaly ideýa sazlamalaryny açyň we Plugins bölümine geçiň. Täze pluginleri gözlemek üçin düwmä basyň "Browse Repositories", şondan soň gözleg penjiresinde “Eclipse Code Formatter” pluginini taparys.
IntelliJ IDEA: Kod stili we formaty - 9
Indi gurnanyňyzdan soň ideýany täzeden açmaly - bu adaty prosedura. Ondan soň, şol bir ýerde, “Idea” sazlamalarynda täze bölüm taparys: “Eclipse Code Formatter” Eclipse üçin format faýlynyň mysalyny şu ýerden tapyp bilersiňiz . Munuň ýaly bir zat görüner:
IntelliJ IDEA: Kod stili we formaty - 10

Güýçlendirmek talaplary

“Idea” gurallaryndan başga-da, talaplary berkitmek üçin gurmak ulgam plaginlerini hem ulanyp bilersiňiz. Adamyň formatirlemegi ulanandygyny barlap bolmaz. Toparda 5 adam bar bolsa, bu henizem mümkin. Kompaniýada 100 adam bar bolsa, bu mümkin däl. Hawa, hatda bäşisini hem yzarlamak kyn bolar. Näme üçin munuň üçin wagt ýitirmeli? Käbir düzgünler bozulsa, taslamany ýygnamagy gadagan etmek has aňsat. Aslynda, bu "Kody barlamak" diýilýän aýratyn mowzuk. Bu makalanyň maksatlary üçin, diňe nähili işleýändigini görkezmek isleýärin. Gradle üçin iň köp ýaýran pluginleriň biri (biziň taslamamyzy ýygnaýar, ýadyňyzda bolsa) pmd . Ony işletmek üçin diňe gradle taslamamyzyň gurluş skriptine (taslamamyzyň kökündäki build.gradle faýly) gidiň we galan pluginleriň gapdalynda pmd görkeziň:

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'
}
Indi ol ýerde has jikme-jik sazlamalary goýup bileris:

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'
    ]
}
Taslamamyzda hemme zat indi gowy däl. “Gradle build” işledeliň we ýalňyşlyk alalyň. Iň gowy zat, ýygnak wagtynda hasabat döredilýär. Rorsalňyşlyklar bar bolsa, aşakdaky ýaly habar alarys:

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
Hasabata barsak, şuňa meňzeş bir zady göreris:
IntelliJ IDEA: Kod stili we formatirleme - 11
Mundan başga-da, Mesele sütüninde pmd plugin web sahypasynda meseläniň beýanyna baglanyşyk bar. Mysal üçin, "headerCommentRequirement Required" säwligi üçin baglanyşyk şu ýere gidýär: pmd - CommentRequired . Bu ýalňyşlyk, synpymyzda JavaDoc ýokdugyny görkezýär. JavaDoc-yň synplarda bolmagy şablonlary ulanyp düzülip bilner:
IntelliJ IDEA: Kod stili we formaty - 12
Faýl sözbaşysynyň mazmunyny görkeziň:
IntelliJ IDEA: Kod stili we formatirleme - 13
Ondan soň, programma synpynyň üstündäki düşündirişi JavaDoc-a öwrüp bileris we ýalňyşlygyň ýok bolandygyny täze Build bilen görüp bileris.

Aşakdaky setir

Kod stili öndürijilikli taslama üçin möhümdir. Umumy düzgünlere laýyklykda ýazylan owadan kod, kärdeşleriňiziň has aňsat we çalt düşünjekdigine kepillik bolup, siz hakda bir-iki sany mähirli zat aýtmaz. Döwrebap ösüş gurallaryny göz öňünde tutup, düzgünlere ýapyşmak beýle bir kyn däl. Bu syn, hakykatdanam munuň şeýledigini görkezdi diýip umyt edýärin. Adat bolşy ýaly, mowzukda azajyk material: # Wiaçeslaw
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION