JavaRush /Java Blog /Random-ID /IntelliJ IDEA: Gaya Kode dan Pemformatan
Viacheslav
Level 3

IntelliJ IDEA: Gaya Kode dan Pemformatan

Dipublikasikan di grup Random-ID
Peralatan modern membuat proses pengembangan lebih mudah. Secara khusus, lebih mudah untuk memantau gaya kode Anda, mencoba meminimalkan pemformatan “tidak sah”. Dalam ulasan ini, saya mengusulkan untuk membiasakan diri dengan alat apa yang disediakan IntelliJ Idea IDE kepada pengembang untuk membuat kode menyenangkan untuk dibaca dan dipahami.
IntelliJ IDEA: gaya kode dan pemformatan - 1

Perkenalan

Bahasa pemrograman sangat mirip dengan bahasa yang digunakan orang. Satu-satunya perbedaan adalah bahwa ini adalah bahasa khusus yang awalnya digunakan untuk berkomunikasi dengan komputer untuk menjelaskan apa yang kita inginkan darinya. Tapi tidak ada komunikasi satu lawan satu dengan komputer. Bahkan ketika Anda mulai belajar bahasa pemrograman, Anda melihat buku atau sumber pendidikan seperti JavaRush. Dan di sumber ini Anda melihat kode yang dapat dimengerti oleh komputer. Namun Anda juga harus memahaminya seiring dengan bertambahnya pengetahuan bahasa Java. Seperti dalam bahasa apa pun, pemrograman memiliki beberapa aturan untuk membentuk kode. Misalnya, menulis dengan pagar dalam masyarakat yang santun dianggap tidak sopan, dan di Jawa menyebut metode dengan huruf kapital merupakan pelanggaran berat terhadap gaya kode. Aturan pemformatan kode Java dirumuskan dalam dokumen Konvensi Kode Java . Selain itu, gaya kode dapat mengatur detail yang lebih kecil, seperti lekukan. Dan ketika alat kontrol versi digunakan, bayangkan seluruh mimpi buruk ketika semua orang menyimpan file baik dalam bentuk tab atau dalam bentuk spasi. Bagaimana jadinya bagi seseorang yang perlu memeriksa editan hanya dalam satu metode, tetapi seluruh file akan diubah karena koreksi spasi pada tab atau sebaliknya. Tentu saja, seperti halnya bahasa biasa, gayanya mungkin berbeda-beda tergantung di mana bahasa itu digunakan. Misalnya, di Internet Anda dapat menemukan Google Java Style Guide atau Twitter Java Style Guide . Untuk artikel ulasan ini, kita memerlukan subjek tes. Mari gunakan layanan sistem pembangunan proyek Gradle. Ini akan memungkinkan kita membuat proyek baru menggunakan template untuk memulai dengan cepat. Gradle memiliki plugin yang bagus: Build Init Plugin . Mari masuk ke direktori baru dan jalankan perintah di sana: gradle init --type java-application Setelah itu, luncurkan IntelliJ Idea. Jika Anda melihat jendela dengan proyek yang sudah terbuka (Anda akan melihat editor kode, pohon struktur proyek), tutup proyek ini menggunakan File -< Close Project. Sekarang di jendela selamat datang kita akan menjalankan "Import Project"dan mengimpor proyek baru kita. Saat mengimpor, atur benderanya "Use autoimport". Mari kita cari tahu apakah mungkin untuk menyederhanakan hidup dengan bantuan alat pembangunan modern.

Memformat Kode dalam Ide

Setelah mengimpor proyek, tekan kombinasi tombol Ctrl+Ndan masuk ke kelas AppTest. Kelas ini adalah kelas tes default. Ini terlihat 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 langsung menarik perhatian Anda di sini? Anotasi dengan deklarasi metode dalam satu baris, yang terlihat jelek, setuju. Bagaimana cara memperbaikinya? IntelliJ Idea memiliki bagian menu "Code"untuk berbagai manipulasi kode. Salah satu manipulasi tersebut adalah "Reformat Code"kombinasi tombol Ctrl + L. Setelah penerapan, anotasi akan berada di satu baris, dan metode itu sendiri akan berada di baris lain. Perlu segera dicatat bahwa operasi ini dilakukan pada bagian kode yang dipilih . Dan jika tidak ada, operasi pemformatan akan dilakukan pada semua konten. Sekarang mari tambahkan metode pengujian baru:
@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 impor:
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
Seperti yang Anda lihat, operasi pada Stream ditempatkan pada satu baris. Namun bagaimana jika kita ingin memastikan bahwa metode yang panggilannya dirantai selalu dipecah menjadi beberapa baris baru? Di satu sisi, kita bisa melakukannya secara manual. Tapi ingatlah bahwa kita ingin semuanya berjalan baik untuk kita. Lagi pula, dari waktu ke waktu kita akan lupa, dan format kode akan berbeda di mana-mana, dan ini tidak baik. Ternyata Anda perlu mengedit aturan yang digunakan Idea untuk melakukan pemformatan. Pilih item Ide di menu File -> Settings(atau klik Ctrl + Alt + S). Di kolom pencarian di jendela pengaturan, tulis "Gaya kode". Di bagian Gaya kode dimungkinkan untuk menentukan pengaturan tidak hanya untuk Java. Tapi sekarang kami tertarik dengan Java. Seperti yang Anda lihat, pengaturannya dibagi menjadi beberapa tab. Yang paling berguna adalah hasil perubahannya akan ditampilkan dalam contoh di sisi kanan jendela:
IntelliJ IDEA: Gaya Kode dan Pemformatan - 2
Seperti yang Anda lihat di tangkapan layar, kita dapat menentukan pengaturan untuk "Panggilan metode berantai" sebagai "selalu bungkus", yaitu. selalu dipisahkan untuk panggilan metode gabungan. Sekarang mari kita tekan format lagi dalam pengujian dan lihat apakah ini benar-benar berfungsi! Namun terkadang ada kebutuhan untuk memformat beberapa kode di luar aturan pemformatan umum. Mari kita atur pemformatan sebagai berikut:
IntelliJ IDEA: Gaya Kode dan Pemformatan - 3
Untuk mengaktifkan pemformatan agar dinonaktifkan, dukungan untuk menonaktifkan penanda pemformatan harus diaktifkan di bagian Gaya Kode:
IntelliJ IDEA: Gaya Kode dan Pemformatan - 4
Sekarang kita dapat mengubah kode pengujian kita sehingga formatnya tetap 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 memperhatikan: saat Anda menekan Tab, Idea menafsirkannya sebagai spasi untuk Anda (perilaku default). Tapi Anda bisa mengubahnya di sana di Code Style:
IntelliJ IDEA: Gaya Kode dan Pemformatan - 5
Seperti yang Anda lihat, ada banyak variasi pengaturan. Anda dapat membaca lebih lanjut tentang pengaturan gaya Kode di sini: " Bantuan Ide: Gaya Kode ". Ada fitur pemformatan penting lainnya - pemformatan impor. Itu dijalankan secara terpisah dan dipanggil "Optimize Imports"dan terletak di item menu Code -> Optimize Imports(Ctrl + Alt + O). Pengoptimalan impor menghapus impor yang tidak perlu dan juga menempatkannya dalam urutan yang benar sesuai dengan pengaturan di tab Impor pada pengaturan Gaya Kode untuk Java. Selain itu, jika Anda ingin pemformatan terjadi secara otomatis, kabar baiknya adalah Anda dapat melakukannya menggunakan plugin Save Actions .

Mendistribusikan Pengaturan ke Tim

Hebat, kita lihat di atas bahwa kita dapat menyesuaikan gaya pemformatan agar sesuai dengan kita. Namun bagaimana gaya ini bisa digunakan dalam tim? Sangat sederhana. Ada beberapa pilihan. Cara termudah adalah menyimpan diagram. Buka pengaturan Ide melalui File -> Pengaturan (atau tekan Ctrl + Alt + S). Pada bagian Code Style kita dapat melihat tulisan Scheme. Ini adalah skema pemformatan kami. Secara default, skema ditentukan dengan nama Default dan di sebelahnya terdapat anotasi IDE: ini berarti pengaturan ini hanya untuk IDE kami, dan tidak memengaruhi siapa pun. Untuk membuat skema “custom”, klik tombol di sebelah kanan untuk membuat “duplikat” dan beri nama, misalnya: JavaRush
IntelliJ IDEA: Gaya Kode dan Pemformatan - 6
Setelah ini kita akan dapat mengimpor atau mengekspor pengaturan:
IntelliJ IDEA: Gaya Kode dan Pemformatan - 7
Pilihan lainnya adalah mengimpor pengaturan Ide impor:
IntelliJ IDEA: Gaya Kode dan Pemformatan - 8
Opsi ketiga adalah Pengaturan Repositori. Untuk informasi selengkapnya tentang penggunaan Repositori Pengaturan, lihat dokumentasi "Bantuan IntelliJ Idea: Repositori Pengaturan ". Mengenai topik mendistribusikan satu gaya dalam tim, saya juga mencatat dukungan yang baik untuk gaya dari Eclipse IDE. Untuk melakukan ini, Anda perlu menginstal plugin terpisah: buka pengaturan Ide melalui File -> Pengaturan (Ctrl + Alt + S) dan buka bagian Plugin. Untuk mencari plugin baru, klik tombol "Browse Repositories", setelah itu kita akan menemukan plugin Eclipse Code Formatter di jendela pencarian.
IntelliJ IDEA: Gaya Kode dan Pemformatan - 9
Sekarang, setelah instalasi, Anda perlu me-restart Idea - ini adalah prosedur standar. Setelah itu, di tempat yang sama, di pengaturan Idea, kita akan menemukan bagian baru: “Eclipse Code Formatter” Contoh format file untuk Eclipse dapat ditemukan di sini . Ini akan terlihat seperti ini:
IntelliJ IDEA: Gaya Kode dan Pemformatan - 10

Persyaratan pengetatan

Selain alat Idea, Anda juga dapat menggunakan plugin sistem build untuk memperketat persyaratan. Tidak ada cara untuk memeriksa apakah seseorang menggunakan pemformatan. Kalau satu tim ada 5 orang, masih bisa. Kalau perusahaannya 100 orang, itu tidak realistis. Ya, bahkan lima pun akan sulit untuk dilacak. Dan mengapa membuang waktu untuk hal ini? Jauh lebih mudah untuk melarang pengumpulan suatu proyek jika aturan tertentu dilanggar. Sebenarnya, ini adalah topik terpisah yang disebut "Inspeksi Kode". Untuk keperluan artikel ini, saya hanya ingin menunjukkan cara kerjanya. Salah satu plugin paling umum untuk Gradle (karena plugin ini mengumpulkan proyek kita, jika Anda ingat) adalah pmd . Untuk mengaktifkannya, cukup buka skrip build proyek gradle kami (file build.gradle di root proyek kami) dan tentukan pmd di samping plugin lainnya:

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 dapat mengatur pengaturan lebih detail 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'
    ]
}
Bahkan dalam proyek kami, semuanya tidak lagi baik. Mari jalankan gradle build dan dapatkan kesalahan. Yang menyenangkan adalah laporan dibuat selama perakitan. Dan jika ada kesalahan, kita akan menerima pesan 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 membuka laporan, kita akan melihat sesuatu seperti:
IntelliJ IDEA: Gaya Kode dan Pemformatan - 11
Apalagi pada kolom Masalah terdapat link deskripsi masalah pada website plugin pmd. Misalnya, untuk kesalahan "headerCommentRequirement Required" tautannya ada di sini: pmd - CommentRequired . Kesalahan ini memberi petunjuk kepada kita bahwa kelas kita tidak memiliki JavaDoc. Kehadiran JavaDoc di atas kelas dapat dikonfigurasi menggunakan templat:
IntelliJ IDEA: Gaya Kode dan Pemformatan - 12
Dan tentukan konten untuk File Header:
IntelliJ IDEA: Gaya Kode dan Pemformatan - 13
Setelah ini, kita dapat mengubah komentar di atas kelas App menjadi JavaDoc dan melihat dengan Build baru bahwa kesalahan telah hilang.

Intinya

Gaya kode penting untuk proyek produktif. Kode indah yang ditulis menurut aturan umum adalah jaminan bahwa kolega Anda akan memahaminya dengan lebih mudah dan cepat, dan tidak akan mengatakan beberapa hal yang penuh kasih sayang tentang Anda. Mengingat alat pembangunan modern, mematuhi aturan tidaklah terlalu sulit. Saya harap ulasan ini menunjukkan bahwa memang demikian adanya. Nah, seperti biasa, sedikit materi tentang topik tersebut: #Viacheslav
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION