Entri
Hari ini saya ingin memberikan ikhtisar-tutorial kecil templat di WBS dari Jetbrains. Contoh di bawah ini akan diterapkan di Jawa di Intellij IDEA, tetapi mekanisme pembuatannya sama untuk bahasa dan produk lain dari perusahaan. Saya pikir semua pemrogram dalam IDE ini menggunakan templat bawaan. Misalnya, ketika Anda menulis fori, tekan TAB atau ENTER dan Anda mendapatkan loop untuk di mana Anda perlu menentukan nama variabel dan kondisi, dan sisa kode dihasilkan untuk Anda.
for (int i = 0; i < ; i++) { }
Atau sout -> System.out.println (), akrab bagi semua programmer java. Jadi, Intellij memiliki dukungan untuk membuat templat kode sendiri. Anehnya, saya hampir tidak menemukan informasi dalam bahasa Rusia dan sedikit bahasa Inggris (karena ada
dokumentasi yang baik) ketika saya menemukan fitur ini, meskipun sangat mempercepat dan membantu dalam pengembangan. Dan sekarang, ketika mereka berkeliling, saya memutuskan untuk menulis artikel pendek tentang itu. Mungkin itu akan membantu programmer yang sedikit berpengalaman, mereka sendiri akan dapat mengetahui semuanya atau sudah lama menggunakannya, tapi saya pikir itu cukup cocok untuk semua orang. Jadi mari kita mulai.
Buat Template
Untuk memulai, mari kita membuat contoh sederhana, misalnya, konstanta logger. Buka
Pengaturan -> Editor -> Live Templates . Di sini Anda dapat melihat grup template yang sudah jadi dan membuat sendiri - dengan mengklik tanda tambah di bagian kanan panel. Anda juga dapat membuat templat terpisah, lalu akan ditambahkan ke grup pengguna. Setelah mengklik, sebuah jendela akan muncul di bawah ini, di mana Anda harus memasukkan singkatan, deskripsi, dan teks templat yang sebenarnya. Juga akan ada tulisan peringatan "
Tidak ada konteks yang berlaku " dan tombol
Tentukan di sebelahnya, mengklik di mana kita akan melihat daftar konteks yang mungkin - HTML, XML, Jawa, Javascript, CSS, dll. Beberapa memiliki sub-item, misalnya, di Jawa adalah kemampuan untuk menggunakan templat dalam suatu metode, dalam komentar, di tingkat kelas, di tempat lain atau di mana saja sekaligus. Mari kita ambil seluruh paket Java sebagai contoh.
Kami akan menulis log sebagai singkatan, inilah baris seperti ini:
private static final Logger LOGGER = Logger.getLogger($CLASS_NAME$.class.getName());
Selanjutnya, klik tombol yang ada di sebelah kanan -
Edit variabel . Di jendela yang terbuka, kita melihat tabel dengan satu catatan - CLASS_NAME, yang sesuai dengan variabel yang kita tentukan dalam teks file sebagai nama kelas. Ini memiliki bidang
Ekspresi ,
nilai Default ,
Lewati jika ditentukan . Bidang pertama adalah pilihan di mana kami ditawari semua jenis nilai yang dapat diganti. Yang kedua hanyalah sebuah baris di mana kita dapat menulis apa pun dengan mengutipnya. Nah, bidang ketiga menawarkan kita untuk melewatkan pengeditan variabel jika ditentukan dalam salah satu properti pertama. Dalam kasus kami, kami membutuhkan nilai
className () pilih dari bidang
Ekspresi . Jika diinginkan, Anda dapat memilih pass edit. Klik
OK , setelah
Mendaftar dan Anda dapat memeriksa. Kami membuat kelas dengan nama apa pun, menulis log di dalam, tekan
TAB dan voila - kami memiliki logger yang bukan CLASS_NAME memiliki nama kelas saat ini.
Contoh:
public class CodeTemplates { private static final Logger LOGGER = Logger.getLogger(CodeTemplates.class.getName()); }
Fitur dan fitur:
1. Saat membuat templat, ada variabel kunci
$ END $ yang menunjukkan di mana kursor akan berada saat Anda membuat templat (Secara default, di akhir kode templat).
System.out.println($END$);
2. Variabel kunci kedua adalah
$ SELEKSI $ . Jika ada di template Anda, maka akan muncul di menu
Surround With (
Ctrl + Alt + T ). Ini diperlukan jika Anda ingin membungkus kode Anda.
System.out.println("$SELECTION$");
Katakanlah Anda memiliki kata atau kalimat, misalnya TEST - Anda meletakkan kursor di akhir kata, tekan Ctrl + Alt + T dan di antara templat yang dapat Anda pilih sendiri, lalu ternyata:
System.out.println("TEST");
PS: untuk satu blok kode atau teks, pilih saja dulu.
3. Beberapa ekstensi dalam Extentions dapat menggunakan berbagai jenis nilai sebagai argumen, termasuk ekstensi lainnya. Untuk membuatnya lebih jelas saya akan memberikan contoh. Mungkin banyak yang akrab dengan anotasi
Tabel JPA, di mana Anda dapat, antara lain, memberikan nama tabel yang sesuai dengan kelas ini (entitas). Biasanya nama tabel dan kelas sama, dengan satu-satunya perbedaan adalah className menjadi CLASS_NAME. Templat untuk membuat anotasi ini akan seperti ini:
@Table(name = "$TABLE NAME$")
Di Extentions, pilih
capitalizeAndUnderscore (String) , hanya bukannya String yang kami tentukan sendiri className:
capitalizeAndUnderscore(className)
Contoh:
@Table(name = "CODE_TEMPLATES") public class CodeTemplates { ... }
PS:Anda juga dapat menulis nilai Anda sendiri di bidang Extentions pilih, seperti pada input, tetapi saya tidak melihat intinya, karena Anda dapat melakukan ini di bidang Nilai default.
4. Dimungkinkan juga untuk mengimpor (
File -> Pengaturan Impor ) dan mengekspor (
File -> Pengaturan Ekspor ) template dan pengaturan lainnya dalam bentuk file jar. Karena templat diekspor sebagai file xml, Anda dapat memilih untuk pergi ke .IntelliJIdea $ VERSION $ / config / templates direktori dan tambahkan xml Anda di sana. Dalam hal ini, Anda perlu menentukan grup templat dalam file, jika tidak, Anda tidak akan melihatnya dalam daftar. Jika Anda tidak menentukan grup, maka templat individual dapat ditambahkan ke salah satu file yang ada, sebagai opsi - user.xml.
Contoh user.xml dengan logger dan
Tabel :
<templateSet group="user"> <template name="log" value="private static final Logger LOGGER = Logger.getLogger($CLASS_NAME$.class.getName());" description="Logger Template" toReformat="false" toShortenFQNames="true"> <variable name="CLASS_NAME" expression="className()" defaultValue="" alwaysStopAt="true" /> <context> <option name="JAVA_DECLARATION" value="true" /> </context> </template> <template name="tb" value="@Table(name = "$TABLE_NAME$")" description="" toReformat="false" toShortenFQNames="true"> <variable name="TABLE_NAME" expression="capitalizeAndUnderscore(className)" defaultValue="" alwaysStopAt="true" /> <context> <option name="JAVA_CODE" value="true" /> </context> </template> </templateSet>
Kesimpulan
Saya harap artikel hari ini akan bermanfaat dan akan membantu mempercepat pengembangan mereka yang belum menggunakan template mereka.
PS: Jika mau, Anda dapat menulis plugin sendiri untuk IDE, termasuk ekstensi untuk templat.
Koreksi atau penambahan dipersilahkan.
Tautan ke dokumentasi resmi:
DI SINITerima kasih,
justboris