JavaRush /Java блогы /Random-KK /IntelliJ IDEA: код стилі және пішімдеу
Viacheslav
Деңгей

IntelliJ IDEA: код стилі және пішімдеу

Топта жарияланған
Заманауи құралдар әзірлеу процесін жеңілдетеді. Атап айтқанда, codeтың стилін бақылау оңайырақ, оның «рұқсат етілмеген» пішімделуін азайтуға тырысады. Бұл шолуда мен IntelliJ Idea IDE codeты оқуға жағымды және түсінуге оңай ету үшін әзірлеушіге қандай құралдар беретінімен танысуды ұсынамын.
IntelliJ IDEA: code стилі және пішімдеу - 1

Кіріспе

Бағдарламалау тілі адамдар сөйлейтін тілге өте ұқсас. Жалғыз айырмашылығы - бұл компьютерден не қалайтынымызды түсіндіру үшін бастапқыда онымен байланысу үшін қолданылатын арнайы тіл. Бірақ компьютермен жеке байланыс болуы мүмкін емес. Бағдарламалау тілін үйренуді бастаған кезде де сіз кітапты немесе JavaRush сияқты білім беру ресурстарын қарадыңыз. Бұл көзде сіз компьютер түсінетін codeты көрдіңіз. Бірақ сіз оны Java тілін білу кезінде түсінуіңіз керек. Кез келген тілдегі сияқты, бағдарламалауда codeты қалыптастырудың кейбір ережелері бар. Мысалы, сыпайы қоғамда қоршаумен жазу жаман әдет болып саналады, ал Java тілінде бас әріппен әдісті шақыру code стилін өрескел бұзу болып табылады. Java codeын пішімдеу ережелері Java Code Convention құжатында тұжырымдалған . Бұған қоса, code стилі шегініс сияқты кішірек мәліметтерді реттей алады. Нұсқаларды басқару құралдары пайдаланылған кезде, барлығы файлды қойынды ретінде шегініспен немесе бос орын ретінде шегініспен сақтағанда, бүкіл қорқынышты елестетіңіз. Өңдеуді бір ғана әдіспен тексеру керек адам үшін бұл қалай болады, бірақ қойындылардағы бос орындарды түзетуге байланысты бүкіл файл өзгереді немесе керісінше. Әрине, кәдімгі тілдегі сияқты, стиль қай жерде қолданылатынына байланысты өзгеруі мүмкін. Мысалы, Интернетте сіз Google Java Style Guide немесе Twitter Java Style Guide таба аласыз . Бұл шолу мақаласы үшін бізге сынақ тақырыбы қажет. Gradle жобасының құрастыру жүйесінің қызметін қолданайық. Ол бізге жылдам бастау үшін үлгіні пайдаланып жаңа жоба жасауға мүмкіндік береді. Gradle-де тамаша плагин бар: Build Init Plugin . Жаңа каталогқа өтіп, сол жерде пәрменді орындаймыз: gradle init --type java-application Осыдан кейін IntelliJ Idea іске қосыңыз. Ашық жобасы бар терезені көрсеңіз (code редакторын, жоба құрылымының ағашын көресіз), бұл жобаны пайдаланып жабыңыз File -< Close Project. Енді сәлемдесу терезесінде біз "Import Project"жаңа жобамызды орындаймыз және импорттаймыз. Импорттау кезінде жалаушаны орнатыңыз "Use autoimport". Заманауи даму құралдарының көмегімен өмірді қандай да бір жолмен жеңілдету мүмкін бе, соны анықтап көрейік.

Идеядағы codeты пішімдеу

Жобаны импорттағаннан кейін пернелер тіркесімін басып Ctrl+N, сыныпқа өтіңіз AppTest. Бұл класс әдепкі сынақ сыныбы болып табылады. Бұл келесідей көрінеді:
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());
    }
}
Бұл жерде көзіңізге бірден не түседі? Ұсқынсыз көрінетін бір жолдағы әдіс декларациясы бар annotation келіседі. Мұны қалай түзетуге болады? "Code"IntelliJ Idea-да әртүрлі codeтық манипуляциялар үшін мәзір бөлімі бар . Осындай манипуляциялардың бірі - "Reformat Code"пернелер тіркесімі Ctrl + L. Қолданудан кейін annotation бір жолда, ал әдістің өзі басқа жолда болады. Бірден айта кету керек, бұл операция codeтың таңдалған бөлімінде орындалады . Ал егер мұндай нәрсе болмаса, пішімдеу операциясы барлық мазмұнда орындалады. Енді жаңа сынақ әдісін қосамыз:
@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));
}
Және екі импорт:
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
Көріп отырғаныңыздай, Stream операциясы бір жолда орналастырылған. Бірақ қоңыраулары тізбектелген әдістер әрқашан бір нүктеде жаңа жолдарға бөлінгеніне көз жеткізгіміз келсе ше? Бір жағынан, біз мұны қолмен жасай аламыз. Бірақ біз бәрі өзіміз үшін жұмыс істегенін қалайтынымызды есте сақтаңыз. Өйткені, біз мезгіл-мезгіл ұмытып кетеміз, ал code форматы барлық жерде әртүрлі болады, бұл жақсы емес. Idea пішімдеуді орындайтын ережені өңдеу керек екен. Мәзірдегі «Идея» тармағын таңдаңыз File -> Settings(немесе түймесін басыңыз Ctrl + Alt + S). Параметрлер терезесіндегі іздеу өрісіне «Код стилі» деп жазыңыз. Код стилі бөлімінде тек Java үшін ғана емес параметрлерді көрсетуге болады. Бірақ қазір бізді Java тілі қызықтырады. Көріп отырғаныңыздай, параметрлер бірнеше қойындыларға бөлінген. Ең пайдалысы, өзгерту нәтижесі терезенің оң жағындағы мысалда көрсетіледі:
IntelliJ IDEA: code стилі және пішімдеу - 2
Скриншотта көріп отырғаныңыздай, біз «Тізбектелген әдісті шақырулар» параметрін «әрқашан орау» ретінде көрсете аламыз, яғни. біріктірілген әдіс қоңыраулары үшін әрқашан бөлінеді. Енді сынақта пішімдеуді қайтадан басайық және оның шынымен жұмыс істейтінін көрейік! Бірақ кейде жалпы пішімдеу ережелерінен тыс кейбір codeты пішімдеу қажеттілігі туындайды. Пішімдеуді келесідей орнатайық:
IntelliJ IDEA: code стилі және пішімдеу - 3
Пішімдеуді өшіруді қосу үшін code стилі бөлімінде пішімдеуді өшіру маркерлерін қолдауды қосу керек:
IntelliJ IDEA: code стилі және пішімдеу - 4
Енді біз тест codeын өзгерте аламыз, сонда оның пішімі біз жазған пішінде қалады:
@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
}
Иә, байқасаңыз: Tab түймесін басқанда, Idea оны сіз үшін бос орындар ретінде түсіндіреді (әдепкі әрекет). Бірақ оны code стилінде өзгертуге болады:
IntelliJ IDEA: code стилі және пішімдеу - 5
Көріп отырғаныңыздай, көптеген параметрлер бар. Код мәнері параметрлері туралы толығырақ мына жерден оқи аласыз: " Идея анықтамасы: code стилі ". Тағы бір маңызды пішімдеу мүмкіндігі бар - импорттық пішімдеу. Ол бөлек орындалады және шақырылады "Optimize Imports"және мәзір пунктінде орналасқан Code -> Optimize Imports(Ctrl + Alt + O). Импортты оңтайландыру қажетсіз импорттарды жояды, сонымен қатар оларды Java параметрлеріне арналған code мәнері Импорттау қойындысындағы параметрлерге сәйкес дұрыс ретке келтіреді. Сондай-ақ, пішімдеудің автоматты түрде орындалғанын қаласаңыз, жақсы жаңалық - оны әрекетті сақтау плагині арқылы жасауға болады .

Параметрлерді командаға тарату

Өте жақсы, біз жоғарыда пішімдеу мәнерін өзімізге сәйкес реттей алатынымызды көрдік. Бірақ бұл стильді командада қалай қолдануға болады? Өте оңай. Бірнеше нұсқа бар. Ең оңай жолы - диаграмманы сақтау. Идея параметрлерін Файл -> Параметрлер арқылы ашыңыз (немесе Ctrl + Alt + S пернелер тіркесімін басыңыз). «Код стилі» бөлімінде жазу схемасын көре аламыз. Бұл біздің форматтау схемамыз. Әдепкі бойынша схема Әдепкі атауымен көрсетіледі және оның жанында IDE annotationсы болады: бұл бұл параметр тек біздің IDE үшін және ол ешкімге әсер етпейді дегенді білдіреді. «Арнаулы» схеманы жасау үшін «көшірме» жасау үшін оң жақтағы түймені басыңыз және оған ат беріңіз, мысалы: JavaRush
IntelliJ IDEA: code стилі және пішімдеу - 6
Осыдан кейін біз параметрлерді импорттай немесе экспорттай аламыз:
IntelliJ IDEA: code стилі және пішімдеу - 7
Басқа опция - Idea параметрлерін импорттау:
IntelliJ IDEA: code стилі және пішімдеу - 8
Үшінші опция - Параметрлер репозиторийі. Параметрлер репозиторийін пайдалану туралы қосымша ақпаратты «IntelliJ Idea анықтамасы: Параметрлер репозиторийі » құжаттамасынан қараңыз . Командада бір стильді тарату тақырыбында мен Eclipse IDE стильдеріне жақсы қолдауды атап өтуге болмайды. Мұны істеу үшін сізге бөлек плагин орнату қажет: Файл -> Параметрлер (Ctrl + Alt + S) арқылы Idea параметрлерін ашыңыз және Плагиндер бөліміне өтіңіз. Жаңа плагиндерді іздеу үшін түймені басыңыз "Browse Repositories", содан кейін іздеу терезесінде Eclipse Code Formatter плагинін табамыз.
IntelliJ IDEA: code стилі және пішімдеу - 9
Енді орнатудан кейін Idea-ны қайта іске қосу керек - бұл стандартты proceduresа. Осыдан кейін, сол жерде, Idea параметрлерінде біз жаңа бөлімді табамыз: «Eclipse Code Formatter» Eclipse үшін пішім файлының мысалын осы жерден табуға болады . Ол келесідей болады:
IntelliJ IDEA: code стилі және пішімдеу - 10

Қатаңдау талаптары

Идея құралдарымен қатар, талаптарды күшейту үшін құрастыру жүйесінің плагиндерін де пайдалануға болады. Адамның пішімдеуді пайдаланғанын тексерудің ешқандай жолы жоқ. Командада 5 адам болса, бұл әлі де мүмкін. Егер компанияда 100 адам болса, бұл шындыққа жанаспайды. Иә, тіпті бесеуін қадағалау қиын болады. Ал неге бұған уақытты ысырап ету керек? Белгілі бір ережелер бұзылса, жобаны жинауға тыйым салу әлдеқайда оңай. Шын мәнінде, бұл «Кодты тексеру» деп аталатын тұтас бөлек тақырып. Осы мақаланың мақсаттары үшін мен оның қалай жұмыс істейтінін көрсеткім келеді. Gradle үшін ең кең тараған плагиндердің бірі (себебі ол біздің жобаны жинайды, егер есіңізде болса) pmd . Оны қосу үшін gradle жобамыздың құрастыру сценарийіне (жобамыздың түбіріндегі build.gradle файлы) өтіп, қалған плагиндердің жанында pmd сөзін көрсетіңіз:

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'
}
Енді сол жерде егжей-тегжейлі параметрлерді орнатуға болады:

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'
    ]
}
Біздің жобада да бәрі жақсы емес. gradle құрастыруды іске қосып, қатені алайық. Бір қызығы, есеп құрастыру кезінде жасалады. Егер қателер болса, біз келесідей хабарлама аламыз:

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
Есепке баратын болсақ, біз келесідей нәрсені көреміз:
IntelliJ IDEA: code стилі және пішімдеу - 11
Сонымен қатар, Мәселе бағанында pmd плагинінің веб-сайтындағы мәселенің сипаттамасына сілтеме бар. Мысалы, "headerCommentRequirement қажет" қатесі үшін сілтеме мына жерде: pmd - CommentRequired . Бұл қате біздің сыныпта JavaDoc жоқ екенін көрсетеді. Сыныптарда JavaDoc болуын үлгілер арқылы конфигурациялауға болады:
IntelliJ IDEA: code стилі және пішімдеу - 12
Файл тақырыбының мазмұнын көрсетіңіз:
IntelliJ IDEA: code стилі және пішімдеу - 13
Осыдан кейін біз App сыныбының үстіндегі түсініктемені JavaDoc-қа айналдырып, қатенің жойылғанын жаңа Build арқылы көре аламыз.

Төменгі сызық

Өнімді жоба үшін code стилі маңызды. Жалпы ережелерге сәйкес жазылған әдемі code - бұл сіздің әріптестеріңіз оны оңайырақ және тез түсінетініне және сіз туралы бір-екі нәзік сөздер айтпайтынына кепілдік. Заманауи даму құралдарын ескере отырып, ережелерді ұстану соншалықты қиын емес. Бұл шолу шынымен де солай екенін көрсетті деп үміттенемін. Әдеттегідей, тақырып бойынша шағын материал: #Вячеслав
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION