JavaRush /Blog Java /Random-MS /IDEA IntelliJ: Gaya Kod dan Pemformatan

IDEA IntelliJ: Gaya Kod dan Pemformatan

Diterbitkan dalam kumpulan
Alat moden memudahkan proses pembangunan. Khususnya, lebih mudah untuk memantau gaya kod anda, cuba meminimumkan pemformatan "tidak dibenarkan". Dalam semakan ini, saya bercadang untuk membiasakan diri dengan alatan yang disediakan oleh IntelliJ Idea IDE kepada pembangun untuk menjadikan kod itu senang dibaca dan mudah difahami.
IDEA IntelliJ: gaya kod dan pemformatan - 1

pengenalan

Bahasa pengaturcaraan sangat serupa dengan bahasa yang digunakan oleh orang ramai. Satu-satunya perbezaan ialah ini adalah bahasa khas yang pada mulanya digunakan untuk berkomunikasi dengan komputer untuk menerangkan kepadanya apa yang kita inginkan daripadanya. Tetapi tidak boleh ada komunikasi satu-satu dengan komputer. Walaupun anda mula mempelajari bahasa pengaturcaraan, anda melihat buku atau beberapa sumber pendidikan seperti JavaRush. Dan dalam sumber ini anda melihat kod yang komputer akan faham. Tetapi anda juga harus memahaminya semasa anda memperoleh pengetahuan tentang bahasa Jawa. Seperti dalam mana-mana bahasa, pengaturcaraan mempunyai beberapa peraturan untuk membentuk kod. Sebagai contoh, menulis dengan pagar dalam masyarakat sopan dianggap sebagai adab yang tidak baik, dan di Jawa memanggil kaedah dengan huruf besar adalah pelanggaran berat terhadap gaya kod. Peraturan untuk memformat kod Java dirumuskan dalam dokumen Konvensyen Kod Java . Selain itu, gaya kod boleh mengawal butiran yang lebih kecil, seperti lekukan. Dan apabila alat kawalan versi digunakan, bayangkan keseluruhan mimpi ngeri apabila semua orang menyimpan fail sama ada diinden sebagai tab atau diinden sebagai ruang. Bagaimana keadaannya bagi seseorang yang perlu menyemak suntingan dalam satu kaedah sahaja, tetapi keseluruhan fail akan diubah kerana pembetulan ruang ke tab atau sebaliknya. Sememangnya, seperti bahasa biasa, gaya mungkin berbeza-beza bergantung pada tempat ia digunakan. Sebagai contoh, di Internet anda boleh menemui Panduan Gaya Java Google atau Panduan Gaya Java Twitter . Untuk artikel ulasan ini, kami memerlukan subjek ujian. Mari gunakan perkhidmatan sistem binaan projek Gradle. Ia akan membolehkan kami membuat projek baharu menggunakan templat untuk permulaan yang pantas. Gradle mempunyai pemalam yang hebat: Bina Init Plugin . Mari pergi ke direktori baharu dan laksanakan arahan di sana: gradle init --type java-application Selepas itu, lancarkan IntelliJ Idea. Jika anda melihat tetingkap dengan projek yang sudah terbuka (anda akan melihat editor kod, pokok struktur projek), tutup projek ini menggunakan File -< Close Project. Sekarang dalam tetingkap selamat datang kami akan melaksanakan "Import Project"dan mengimport projek baharu kami. Apabila mengimport, tetapkan bendera "Use autoimport". Mari kita fikirkan sama ada mungkin untuk memudahkan kehidupan dengan bantuan alat pembangunan moden.

Memformat Kod dalam Idea

Selepas mengimport projek, tekan kombinasi kekunci Ctrl+Ndan pergi ke kelas AppTest. Kelas ini ialah kelas ujian lalai. Ia kelihatan seperti ini:
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());
    }
}
Apa yang menarik perhatian anda di sini? Anotasi dengan pengisytiharan kaedah pada satu baris, yang kelihatan hodoh, bersetuju. Bagaimana untuk membetulkannya? IntelliJ Idea mempunyai bahagian menu "Code"untuk pelbagai manipulasi kod. Salah satu manipulasi sedemikian ialah "Reformat Code"kombinasi kunci Ctrl + L. Selepas permohonan, anotasi akan berada pada satu baris, dan kaedah itu sendiri akan berada pada baris lain. Perlu diingat dengan segera bahawa operasi ini dilakukan pada bahagian kod yang dipilih . Dan jika tiada perkara sedemikian, operasi pemformatan akan dilakukan pada semua kandungan. Sekarang mari tambah kaedah ujian baharu:
@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));
}
Dan dua import:
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
Seperti yang anda lihat, operasi pada Stream diletakkan pada satu baris. Tetapi bagaimana jika kita ingin memastikan bahawa kaedah yang panggilannya dirantai sentiasa dipecahkan pada titik menjadi baris baharu? Di satu pihak, kita boleh melakukan ini secara manual. Tetapi ingat bahawa kita mahu segala-galanya berfungsi untuk kita. Lagipun, dari semasa ke semasa kita akan lupa, dan format kod akan menjadi berbeza di mana-mana, dan ini tidak baik. Ternyata anda perlu mengedit peraturan yang Idea melaksanakan pemformatan. Pilih item Idea dalam menu File -> Settings(atau klik Ctrl + Alt + S). Dalam medan carian dalam tetingkap tetapan, tulis "Gaya kod". Dalam bahagian gaya Kod adalah mungkin untuk menentukan tetapan bukan sahaja untuk Java. Tetapi sekarang kami berminat dengan Java. Seperti yang anda lihat, tetapan dibahagikan kepada beberapa tab. Perkara yang paling berguna ialah hasil perubahan akan ditunjukkan dalam contoh di sebelah kanan tetingkap:
IDEA IntelliJ: Gaya Kod dan Pemformatan - 2
Seperti yang anda boleh lihat dalam tangkapan skrin, kami boleh menentukan tetapan untuk "Panggilan kaedah berantai" sebagai "bungkus sentiasa", i.e. sentiasa berpecah untuk panggilan kaedah gabungan. Sekarang mari tekan pemformatan sekali lagi dalam ujian dan lihat bahawa ia benar-benar berfungsi! Tetapi kadangkala ia berlaku bahawa terdapat keperluan untuk memformat beberapa kod di luar peraturan pemformatan umum. Mari sediakan pemformatan seperti berikut:
IDEA IntelliJ: Gaya Kod dan Pemformatan - 3
Untuk membolehkan pemformatan dilumpuhkan, sokongan untuk melumpuhkan penanda pemformatan mesti didayakan dalam bahagian Gaya Kod:
IDEA IntelliJ: Gaya Kod dan Pemformatan - 4
Sekarang kita boleh menukar kod ujian kita supaya pemformatannya kekal dalam bentuk yang kita tulis:
@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
}
Ya, jika anda perasan: apabila anda menekan Tab, Idea mentafsirkannya sebagai ruang untuk anda (tingkah laku lalai). Tetapi anda boleh menukar ini di sana dalam Gaya Kod:
IDEA IntelliJ: Gaya Kod dan Pemformatan - 5
Seperti yang anda lihat, terdapat pelbagai jenis tetapan. Anda boleh membaca lebih lanjut mengenai tetapan gaya Kod di sini: " Bantuan Idea: Gaya Kod ". Terdapat satu lagi ciri pemformatan penting - pemformatan import. Ia dilaksanakan secara berasingan dan dipanggil "Optimize Imports"dan terletak dalam item menu Code -> Optimize Imports(Ctrl + Alt + O). Pengoptimuman import mengalih keluar import yang tidak perlu dan juga meletakkannya dalam susunan yang betul mengikut tetapan dalam tab Import bagi tetapan Gaya Kod untuk Java. Selain itu, jika anda mahu pemformatan berlaku secara automatik, berita baiknya ialah anda boleh melakukannya menggunakan pemalam Save Actions .

Mengedarkan Tetapan kepada Pasukan

Hebat, kami melihat di atas bahawa kami boleh menyesuaikan gaya pemformatan agar sesuai dengan kami. Tetapi bagaimana gaya ini boleh digunakan dalam pasukan? Sangat ringkas. Terdapat beberapa pilihan. Yang paling mudah ialah menyimpan gambar rajah. Buka tetapan Idea melalui Fail -> Tetapan (atau tekan Ctrl + Alt + S). Dalam bahagian Gaya Kod kita boleh melihat Skim inskripsi. Ini adalah skema pemformatan kami. Secara lalai, skim ditentukan dengan nama Lalai dan di sebelahnya ialah anotasi IDE: ini bermakna tetapan ini hanya untuk IDE kami dan ia tidak menjejaskan sesiapa sahaja. Untuk membuat skema "tersuai", klik butang di sebelah kanan untuk membuat "pendua" dan beri nama, contohnya: JavaRush
IDEA IntelliJ: Gaya Kod dan Pemformatan - 6
Selepas ini kami akan dapat mengimport atau mengeksport tetapan:
IDEA IntelliJ: Gaya Kod dan Pemformatan - 7
Pilihan lain ialah mengimport tetapan Idea import:
IDEA IntelliJ: Gaya Kod dan Pemformatan - 8
Pilihan ketiga ialah Repositori Tetapan. Untuk mendapatkan maklumat lanjut tentang menggunakan Repositori Tetapan, lihat dokumentasi "Bantuan Idea IntelliJ: Repositori Tetapan ". Mengenai topik mengedarkan gaya tunggal dalam pasukan, saya juga tidak dapat mengelak daripada melihat sokongan yang baik untuk gaya daripada IDE Eclipse. Untuk melakukan ini, anda perlu memasang pemalam berasingan: buka tetapan Idea melalui Fail -> Tetapan (Ctrl + Alt + S) dan pergi ke bahagian Pemalam. Untuk mencari pemalam baharu, klik butang "Browse Repositories", selepas itu kami akan menemui pemalam Pemformat Kod Eclipse dalam tetingkap carian.
IDEA IntelliJ: Gaya Kod dan Pemformatan - 9
Sekarang, selepas pemasangan, anda perlu memulakan semula Idea - ini adalah prosedur standard. Selepas itu, di tempat yang sama, dalam tetapan Idea, kami akan menemui bahagian baharu: "Pemformat Kod Eclipse". Contoh fail format untuk Eclipse boleh didapati di sini . Ia akan kelihatan seperti ini:
IDEA IntelliJ: Gaya Kod dan Pemformatan - 10

Keperluan mengetatkan

Selain alat Idea, anda juga boleh menggunakan pemalam sistem binaan untuk mengetatkan keperluan. Tiada cara untuk menyemak sama ada seseorang menggunakan pemformatan. Sekiranya terdapat 5 orang dalam pasukan, ia masih boleh dilakukan. Jika syarikat mempunyai 100 orang, ia tidak realistik. Ya, walaupun lima akan sukar untuk dijejaki. Dan mengapa membuang masa untuk ini? Adalah lebih mudah untuk melarang pengumpulan projek jika peraturan tertentu dilanggar. Sebenarnya, ini adalah topik berasingan yang dipanggil "Kod Periksa". Untuk tujuan artikel ini, saya hanya ingin menunjukkan cara ia berfungsi. Salah satu pemalam yang paling biasa untuk Gradle (kerana ia mengumpul projek kami, jika anda masih ingat) ialah pmd . Untuk mendayakannya, hanya pergi ke skrip binaan projek gradle kami (fail build.gradle dalam akar projek kami) dan nyatakan pmd di dalamnya bersebelahan pemalam yang lain:

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'
}
Sekarang kita boleh menetapkan tetapan yang lebih terperinci di sana:

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'
    ]
}
Malah dalam projek kami, semuanya tidak lagi baik. Mari jalankan gradle build dan dapatkan ralat. Apa yang menarik ialah laporan dijana semasa pemasangan. Dan jika terdapat ralat, kami akan menerima mesej seperti:

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
Jika kita pergi ke laporan, kita akan melihat sesuatu seperti:
IDEA IntelliJ: Gaya Kod dan Pemformatan - 11
Lebih-lebih lagi, dalam ruangan Masalah terdapat pautan ke penerangan masalah di laman web plugin pmd. Sebagai contoh, untuk ralat "headerCommentRequirement Diperlukan" pautan pergi ke sini: pmd - CommentRequired . Ralat ini memberi petunjuk kepada kami bahawa kelas kami tidak mempunyai JavaDoc. Kehadiran JavaDoc di atas kelas boleh dikonfigurasikan menggunakan templat:
IDEA IntelliJ: Gaya Kod dan Pemformatan - 12
Dan tentukan kandungan untuk Pengepala Fail:
IDEA IntelliJ: Gaya Kod dan Pemformatan - 13
Selepas ini, kita boleh menukar ulasan di atas kelas App menjadi JavaDoc dan melihat dengan Build baharu bahawa ralat telah hilang.

Pokoknya

Gaya kod adalah penting untuk projek yang produktif. Kod cantik yang ditulis mengikut peraturan am adalah jaminan bahawa rakan sekerja anda akan memahaminya dengan lebih mudah dan cepat, dan tidak akan mengatakan beberapa perkara yang penuh kasih sayang tentang anda. Memandangkan alat pembangunan moden, mematuhi peraturan tidak begitu sukar. Saya harap semakan ini telah menunjukkan bahawa ini memang berlaku. Nah, seperti biasa, sedikit bahan mengenai topik: #Viacheslav
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION