CodeGym /Java Blog /Acak /IntelliJ IDEA: Gaya pengkodean dan pemformatan kode
John Squirrels
Level 41
San Francisco

IntelliJ IDEA: Gaya pengkodean dan pemformatan kode

Dipublikasikan di grup Acak
Bahasa pemrograman sangat mirip dengan bahasa lisan. Satu-satunya perbedaan adalah bahwa ini adalah bahasa khusus yang tujuan utamanya adalah memfasilitasi komunikasi dengan komputer untuk menjelaskan kepada komputer apa yang ingin kita lakukan. Tetapi Anda tidak dapat melakukan percakapan pribadi dengan komputer. Ketika Anda mulai mempelajari bahasa pemrograman, Anda melihat buku atau sumber pendidikan seperti CodeGym. Dan sumber daya ini menunjukkan kepada Anda kode yang dimengerti komputer. Tetapi Anda juga harus memahaminya saat Anda belajar tentang bahasa Jawa. Seperti halnya bahasa apa pun, beberapa konvensi pemformatan telah diadopsi dalam pemrograman. Misalnya, dalam masyarakat yang sopan, menulis seperti ini akan dianggap sebagai perilaku yang tidak baik. Dan di Jawa, memulai nama metode dengan huruf kapital merupakan pelanggaran berat terhadap konvensi pengkodean. IntelliJ IDEA: Gaya pengkodean dan pemformatan kode - 1Aturan untuk kode Java diberikan dalam dokumen Konvensi Kode untuk Bahasa Pemrograman Java . Konvensi pengkodean juga dapat mengatur detail yang lebih kecil, seperti indentasi. Bayangkan mimpi buruk yang akan terjadi pada kontrol versi jika lekukan tidak konsisten, beberapa orang menggunakan tab dan orang lain menggunakan spasi. Bagaimana jadinya bagi seseorang yang perlu memeriksa perbaikan hanya dalam satu metode, tetapi mendapati seluruh file berubah karena perbedaan spasi dan tab? Tentu saja, seperti bahasa biasa, konvensi dapat berubah tergantung di mana bahasa digunakan. Misalnya, di web yang sangat luas, Anda dapat menemukan Panduan Gaya Google Java dan Panduan Gaya Java Twitter. Untuk ulasan ini, kami membutuhkan subjek uji. Kami akan menggunakan sistem otomasi build Gradle. Ini akan memungkinkan kita memulai dengan cepat dengan membuat proyek baru dari template. Gradle memiliki plugin yang bagus: Build Init Plugin . Ayo pergi ke direktori baru dan jalankan perintah berikut di sana: gradle init --type java-application Setelah itu, jalankan IntelliJ IDEA. Jika Anda melihat jendela dengan proyek terbuka (yaitu Anda melihat editor kode dan pohon proyek), tutup proyek ini menggunakan File -> Close Project. Sekarang di jendela selamat datang, jalankan " Import Project" dan impor proyek baru kita. Saat mengimpor, setel Use autoimportkotak centang " ". Mari kita cari tahu apakah kita dapat menggunakan alat pengembangan canggih untuk menyederhanakan hidup.

Pemformatan kode di IDEA

Setelah mengimpor proyek, tekan Ctrl+N dan pergi ke AppTestkelas. 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? Anotasi pada baris yang sama dengan deklarasi metode, yang terlihat jelek, bukan? Bagaimana cara memperbaikinya? IntelliJ IDEA memiliki Codeentri menu " " untuk berbagai manipulasi kode. Salah satu manipulasi tersebut adalah " Reformat Code", yang dapat Anda terapkan menggunakan Ctrl+L. Setelah Anda melakukan ini, anotasi akan berada di satu baris, dan deklarasi metode di baris lainnya. Perlu dicatat segera bahwa operasi ini dilakukan pada kode yang dipilih saat ini . Jika tidak ada pilihan, maka operasi pemformatan dilakukan pada semuanya. Sekarang mari tambahkan metode pengujian baru:

 @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));
 }
Dan dua impor:

import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
Seperti yang Anda lihat, operasi di Stream ada di satu baris. Tetapi bagaimana jika kita ingin memastikan bahwa pemanggilan metode berantai selalu dipecah menjadi baris baru pada setiap periode operator? Kita bisa melakukan ini secara manual. Tetapi ingat bahwa kami ingin semuanya terjadi secara otomatis. Memang, kami pasti akan melupakan langkah manual dari waktu ke waktu, dan kemudian kami akan berakhir dengan pemformatan yang berbeda di mana-mana, dan itu tidak baik. Jadi kita perlu mengedit aturan yang digunakan IDEA untuk memformat. MemilihFile -> Settingsdi menu IDEA (atau tekan Ctrl+Alt+S). Masukkan "Gaya kode" di bidang pencarian di jendela pengaturan. Di bagian "Gaya kode", Anda dapat menentukan setelan untuk lebih banyak bahasa selain Java. Tapi Java adalah yang kami minati saat ini. Seperti yang Anda lihat, pengaturan dibagi menjadi beberapa tab. Fitur yang sangat berguna adalah contoh operasi ditampilkan di bagian kanan jendela: IntelliJ IDEA: Gaya pengkodean dan pemformatan kode - 2Tangkapan layar menunjukkan bahwa kita dapat menyetel "Panggilan metode berantai" menjadi "selalu dibungkus", yaitu selalu membagi panggilan metode berantai menjadi baris terpisah. Sekarang klik lagi tombol pemformatan di kelas pengujian dan kami melihat bahwa itu benar-benar berfungsi! Namun terkadang Anda perlu memformat beberapa kode di luar aturan pemformatan standar. Siapkan pemformatan sebagai berikut: IntelliJ IDEA: Gaya pengkodean dan pemformatan kode - 3Untuk mencegah pemformatan, di bagian "Gaya Kode", aktifkan penanda pemformat: IntelliJ IDEA: Gaya pengkodean dan pemformatan kode - 4Sekarang kita dapat mengubah kelas pengujian agar kodenya tidak diformat ulang:

 @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
 }
Anda mungkin memperhatikan bahwa saat Anda menekan Tab, IDEA menafsirkannya sebagai spasi (ini adalah perilaku default). Tapi Anda bisa mengubahnya di Code Stylebagian " ": IntelliJ IDEA: Gaya pengkodean dan pemformatan kode - 5Seperti yang Anda lihat, ada banyak pengaturan di sana. Anda dapat membaca detail lebih lanjut tentang Code stylepengaturan " " di sini: " Bantuan IDEA: Gaya Kode ". Ada fitur pemformatan penting lainnya: pemformatan impor. Operasi ini dijalankan secara terpisah dan disebut " Optimize Imports". Itu terletak di bawah Code -> Optimize Imports(Ctrl+Alt+O). Mengoptimalkan impor akan menghapus impor yang tidak perlu dan menyusun impor dalam urutan yang benar sesuai dengan setelan di Importstab " " pada Code Stylesetelan " " untuk Java. Terlebih lagi, jika Anda ingin pemformatan ini terjadi secara otomatis, ada kabar baik:Plugin Simpan Tindakan .

Mendistribusikan pengaturan dalam perintah

Kami melihat di atas bahwa Anda dapat menyesuaikan gaya pemformatan sesuka Anda. Tapi bagaimana Anda menggunakan gaya ini dalam sebuah tim? Sangat mudah. Ada beberapa pilihan. Yang paling sederhana adalah menyimpan skema gaya kode. Buka pengaturan IDEA menggunakan File -> Settings(atau tekan Ctrl+Alt+S). Di bagian " Code Style", kita bisa melihat "Skema". Ini adalah skema pemformatan kami. Secara default, skema "Default" digunakan dan diberi label "IDE", yang berarti bahwa pengaturan ini hanya berlaku untuk IDE kita — tidak memengaruhi orang lain. Untuk membuat skema "kustom", gunakan tombol di sebelah kanan untuk membuat salinan dan beri nama, misalnya: CodeGym IntelliJ IDEA: Gaya pengkodean dan pemformatan kode - 6Kemudian kita dapat mengimpor atau mengekspor pengaturan: IntelliJ IDEA: Gaya pengkodean dan pemformatan kode - 7 Opsi lainnya adalah mengimpor pengaturan IDEA: IntelliJ IDEA: Gaya pengkodean dan pemformatan kode - 8Opsi ketiga adalah Repositori Pengaturan. Untuk menggunakan Repositori Pengaturan, lihat dokumentasi Bantuan IntelliJ IDEA untuk detail lebih lanjut di tautan berikut: Repositori Pengaturan ". Berbicara tentang mendorong gaya terpadu pada tim, saya juga tidak bisa tidak menyebutkan dukungan yang baik untuk gaya dari Eclipse IDE. Untuk melakukan ini, Anda perlu menginstal plugin terpisah: buka pengaturan IDEA melalui File -> Pengaturan (Ctrl+Alt+S) dan buka bagian "Plugin". Untuk menemukan plugin baru, klik tombol " ". Browse RepositoriesKemudian temukan plugin Eclipse Code Formatter di jendela pencarian. IntelliJ IDEA: Gaya pengkodean dan pemformatan kode - 9Setelah menginstalnya, Anda harus memulai ulang IDEA — ini adalah prosedur standar. Sekarang semuanya sudah selesai. Ada bagian baru di pengaturan IDEA: "Eclipse Code Formatter".. Ini akan terlihat seperti ini: IntelliJ IDEA: Gaya pengkodean dan pemformatan kode - 10

Persyaratan yang lebih ketat

Selain alat IDEA, Anda juga dapat menggunakan plugin otomasi build untuk memperketat persyaratan. Tidak mungkin Anda dapat memeriksa secara manual apakah seseorang telah menggunakan pemformatan yang tepat. Mungkin Anda bisa dengan 5 orang dalam satu tim. Tapi dengan 100 orang di sebuah perusahaan, itu tidak realistis. Dan bahkan lima pun akan sulit dilacak. Dan mengapa membuang waktu Anda untuk semua ini? Akan jauh lebih mudah untuk mencegah proyek dibangun jika aturan dilanggar. Faktanya, ini adalah topik terpisah yang disebut "Periksa Kode". Pada artikel ini, saya hanya ingin menunjukkan cara kerjanya. Salah satu plugin Gradle paling populer (karena itu membangun proyek kami, Anda ingat) adalah pmd. Untuk mengaktifkannya, cukup buka skrip build proyek Gradle kami (file build.gradle di root proyek kami) dan tambahkan 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 memasukkan pengaturan yang lebih detail di tempat yang sama:

 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 proyek kami rusak sekarang. Jalankan gradle builddan kami mendapatkan kesalahan. Hal yang menyenangkan adalah laporan dibuat selama pembuatan. Dan jika ada kesalahan, kami mendapat pesan seperti ini:

 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
Pergi ke laporan, kami melihat sesuatu seperti ini: IntelliJ IDEA: Gaya pengkodean dan pemformatan kode - 11Selain itu, kolom " Problem" menyediakan tautan ke deskripsi masalah di situs web plugin pmd. Misalnya, untuk headerCommentRequirement Requiredkesalahan " ", tautannya ada di sini: pmd — CommentRequired . Kesalahan ini merupakan petunjuk bahwa kelas kita tidak memiliki JavaDoc. Kita dapat menggunakan templat untuk mengonfigurasi kelas JavaDoc di atas: IntelliJ IDEA: Gaya pengkodean dan pemformatan kode - 12Dan menentukan konten untuk File Header: IntelliJ IDEA: Gaya pengkodean dan pemformatan kode - 13Setelah itu, kita dapat mengubah komentar di atas kelas Aplikasi menjadi JavaDoc dan melihat bahwa kesalahan telah hilang dalam versi baru.

Garis bawah

Gaya kode penting untuk memaksimalkan produktivitas pada suatu proyek. Kode indah yang ditulis sesuai dengan aturan bersama menjamin bahwa rekan kerja Anda akan lebih mudah dan cepat memahaminya dan tidak akan memberi Anda banyak kritik. Dengan alat pengembangan modern, tidak terlalu sulit untuk mengikuti aturan gaya. Saya harap ulasan ini telah membuktikan kepada Anda bahwa ini benar. Mengikuti tradisi, inilah sedikit materi tambahan tentang topik ini:
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION