Anda dapat membuat berbagai templat kode Java di Eclipse via
Window> Preferences> Java> Editor> Templates
misalnya
sysout
diperluas ke:
System.out.println(${word_selection}${});${cursor}
Anda dapat mengaktifkan ini dengan mengetik sysout
diikuti olehCTRL+SPACE
Template kode Java apa yang bermanfaat yang saat ini Anda gunakan? Sertakan nama dan uraiannya serta mengapa itu keren.
Saya mencari penggunaan template asli / novel daripada fitur bawaan yang ada.
- Buat Log4J logger
- Dapatkan warna swt dari tampilan
- Syncexec - Kerangka Eclipse
- Singleton Pattern / Enum Singleton Generation
- Bacafile
- Const
- Menelusuri
- Format String
- Ulasan Kode Komentar
- Format string
- Coba Akhirnya Kunci
- Format Pesan i18n dan log
- Equalsbuilder
- Pembuat Hashcodebuilder
- Injeksi Objek Pegas
- Buat FileOutputStream
System.out.println(${word_selection}${});${cursor}
artinya? Sepertinya ada cara untuk memilih kata dan secara otomatis membungkusnya di dalamsysout
panggilan, apakah saya benar? Bagaimana?Jawaban:
Templat kode berikut akan membuat logger dan membuat impor yang tepat, jika perlu.
SLF4J
Log4J 2
Log4J
Sumber .
JULI
sumber
Beberapa templat tambahan di sini: Tautan I - Tautan II
Saya suka yang ini:
readfile
UPDATE : Versi Java 7 dari templat ini adalah:
sumber
StandardCharsets.UTF_8
atasCharset.forName("UTF-8")
.Memformat string
MessageFormat - mengelilingi pilihan dengan MessageFormat.
Ini memungkinkan saya memindahkan kursor ke string, memperluas pilihan ke seluruh string (Shift-Alt-Up), lalu Ctrl-Space dua kali.
Kunci pilihan
kunci - mengelilingi garis yang dipilih dengan mencoba akhirnya mengunci. Asumsikan ada variabel kunci.
${line_selection}
Templat NB muncul di menu Surround With (Alt-Shift-Z).sumber
lock
danunlock
.acquire
danrelease
digunakan untuk semaphores dan penggunaannya dalam blok try-akhirnya tidak begitu disarankan seperti dengan kunci .Saya tahu saya menendang tiang yang mati, tetapi ingin membagikan ini demi penyelesaian:
Versi yang benar dari templat generasi tunggal, yang mengatasi desain penguncian ganda yang cacat (dibahas di atas dan disebutkan di tempat lain)
Templat Pembuatan Singleton: Beri nama ini
createsingleton
Untuk mengakses lajang yang dihasilkan menggunakan di atas:
Templat referensi Singleton: Beri nama ini
getsingleton
:sumber
${enclosing_type}
dimaksud?${primary_type_name}
contoh penggunaan enum :public enum ${primary_type_name} { INSTANCE; private ${return_type} ${name} = new ${return_type}(); public ${return_type} ${getName}(${}) { return ${name}; } ${cursor} }
Tambahkan potongan kode untuk diulangi
Map.entrySet()
:Templat:
Kode yang Dihasilkan:
sumber
${}
dan, alih-alih${cursor}
, mengaktifkan "iterasi tab" di antara bidang. Terima kasih.Untuk
log
, sedikit lagu pendek untuk menambahkan variabel anggota.sumber
Buat tiruan dengan Mockito (dalam konteks "Pernyataan Java"):
Dan di "anggota tipe Java":
Mock metode void untuk melempar pengecualian:
Mock metode kosong untuk melakukan sesuatu:
Verifikasi metode mocked yang dipanggil tepat sekali:
Verifikasi metode mocked tidak pernah dipanggil:
Daftar tertaut baru menggunakan Google Guava (dan serupa untuk hashset dan hashmap):
Saya juga menggunakan templat besar yang menghasilkan kelas Tes. Ini adalah bagian singkat yang harus disesuaikan oleh semua orang yang tertarik:
sumber
Cek kosong!
sumber
PreConditions.checkNotNull(...)
metode dalam Jambu adalah alternatif yang sangat mudah dibaca (terutama dengan impor statis)Salah satu yang saya cintai adalah foreach :
Dan penelusuran , karena saya sering menggunakannya untuk melacak:
Saya hanya berpikir tentang yang lain dan telah menemukannya di Internet suatu hari, const :
sumber
traceout
sudah tersedia di Eclipse assystrace
.Sedikit tip tentang sysout - Saya suka menamainya menjadi "sop". Tidak ada yang lain di lib java dimulai dengan "sop" sehingga Anda dapat dengan cepat mengetik "sop" dan boom, itu menyisipkan.
sumber
Lempar IllegalArgumentException dengan variabel dalam lingkup saat ini (illarg):
Lebih baik
sumber
Tidak ada yang mewah untuk produksi kode - tetapi cukup berguna untuk ulasan kode
Saya memiliki template coderev saya rendah / med / tinggi melakukan hal berikut
Dan kemudian dalam tampilan Tugas - akan menunjukkan kepada saya semua komentar ulasan kode yang ingin saya sampaikan selama rapat.
sumber
Beberapa templat lagi di sini .
Termasuk:
sumber
slf4j Logging
sumber
Properti Kacang
Dukungan PropertiChange
sumber
Post Java 7, cara yang bagus untuk mengatur logger yang membutuhkan (atau lebih suka) referensi statis ke kelas terlampir adalah dengan menggunakan API MethodHandles yang baru diperkenalkan untuk mendapatkan kelas runtime dalam konteks statis.
Cuplikan contoh untuk SLF4J adalah:
Selain menjadi potongan sederhana dalam IDE apa pun, juga kurang rapuh jika Anda mengubah fungsi tertentu ke kelas lain karena Anda tidak akan sengaja membawa nama kelas dengannya.
sumber
Meminta kode pada utas GUI
Saya mengikat templat berikut ke pintasan
slater
untuk dengan cepat mengirimkan kode pada utas GUI.sumber
Saat menguji sekitar dengan kode saya kadang-kadang terjawab di menghapus beberapa syso s. Jadi saya membuat sendiri template yang disebut syt .
Sebelum saya kompilasi saya selalu memeriksa TODO saya dan tidak akan pernah lupa untuk menghapus System.out lagi.
sumber
strf -> String.format("msg", args)
cukup sederhana tetapi menghemat sedikit mengetik.sumber
String.format("${string}",${objects})
karena Eclipse memungkinkan saya untuk tab di antara string saya dan daftar objek saya.String.format(${word_selection}${},)${cursor}
pertama pilih sebuah string kemudian gunakan 'sf' di atasnya. Tambahkan% s dan seterusnya ...Dapatkan warna SWT dari tampilan saat ini:
Suround dengan syncexec
Gunakan pola desain tunggal:
sumber
Dan equalsbuilder, adaptasi hashcodebuilder:
sumber
Template untuk deklarasi logger sangat bagus.
Saya juga membuat linfo, ldebug, lwarn, lerror untuk level log yang saya gunakan lebih sering.
lerror:
sumber
Buat semuanya untuk sebuah acara
Karena acara agak merepotkan untuk dibuat di Jawa - semua antarmuka, metode, dan hal-hal untuk ditulis hanya untuk 1 acara - saya membuat template sederhana untuk membuat semua yang diperlukan untuk 1 acara.
Jika Anda memiliki acara yang membagikan satu
EventObject
, cukup hapus satu yang disesuaikan yang disisipkan oleh templat dan ubah bagian yang sesuai dariraise___()
danon____()
.Saya telah menulis mekanisme acara yang bagus, sedikit, elegan menggunakan antarmuka generik dan kelas generik, tetapi tidak akan berhasil karena cara Java menangani obat generik. = (
Sunting : 1) Saya mengalami masalah ketika utas menambah / menghapus pendengar saat acara sedang berlangsung. Tidak
List
dapat dimodifikasi saat sedang digunakan, jadi saya menambahkansynchronized
blok di mana daftar pendengar sedang diakses atau digunakan, mengunci daftar itu sendiri.sumber
Masukkan metode uji yang harus diberikan-kapan-kemudian
Saya melihat versi yang mirip dengan yang satu ini baru-baru ini ketika memasangkan pemrograman dengan pengembang dan teman yang sangat baik, dan saya pikir ini bisa menjadi tambahan yang bagus untuk daftar ini.
Templat ini akan membuat metode pengujian baru di kelas, mengikuti pendekatan Diberikan - Kapan - Kemudian dari pengembangan yang didorong perilaku (BDD) pada komentar, sebagai panduan untuk menyusun kode. Ini akan memulai nama metode dengan "harus" dan membiarkan Anda mengganti sisa nama metode dummy "CheckThisAndThat" dengan deskripsi terbaik dari tanggung jawab metode pengujian. Setelah mengisi nama, TAB akan membawa Anda langsung ke
// Given section
, sehingga Anda dapat mulai mengetik prasyarat Anda.Saya memetakannya ke tiga huruf "tst", dengan deskripsi "Metode pengujian harus-diberikan-kapan-kemudian";)
Saya harap Anda merasakan manfaatnya seperti ketika saya melihatnya:
sumber
Injeksi Musim Semi
Saya tahu ini agak terlambat untuk permainan, tapi ini yang saya gunakan untuk Spring Injection di kelas:
sumber
Berikut ini adalah konstruktor untuk kelas yang tidak bisa dipakai:
Ini untuk pengecualian khusus:
sumber
Saya suka komentar kelas yang dihasilkan seperti ini:
"Saya ..." segera mendorong pengembang untuk menggambarkan apa yang dilakukan kelas. Saya tampaknya memperbaiki masalah kelas tidak berdokumen.
Dan tentu saja $ Id $ adalah kata kunci CVS yang berguna.
sumber
Saya sudah banyak menggunakan cuplikan ini, mencari
null
nilai dan string kosong.Saya menggunakan "uji argumen" -templat sebagai kode pertama dalam metode saya untuk memeriksa argumen yang diterima.
testNullArgument
Anda mungkin ingin mengubah pesan pengecualian agar sesuai dengan standar perusahaan atau proyek Anda. Namun, saya merekomendasikan memiliki beberapa pesan yang menyertakan nama argumen yang menyinggung. Kalau tidak, penelepon metode Anda harus melihat dalam kode untuk memahami apa yang salah. (SEBUAH
NullPointerException
tanpa pesan menghasilkan pengecualian dengan pesan "null" yang tidak masuk akal).testNullOrEmptyStringArgument
Anda juga dapat menggunakan kembali templat pemeriksaan nol dari atas dan menerapkan cuplikan ini hanya untuk memeriksa string kosong. Anda kemudian akan menggunakan kedua templat untuk menghasilkan kode di atas.
Template di atas, bagaimanapun, memiliki masalah bahwa jika argumen in adalah final Anda harus mengubah kode yang dihasilkan beberapa (the
${varName} = ${varName}.trim()
akan gagal).Jika Anda menggunakan banyak argumen terakhir dan ingin memeriksa string kosong tetapi tidak harus memotongnya sebagai bagian dari kode Anda, Anda bisa menggunakan ini:
testNullFieldState
Saya juga membuat beberapa cuplikan untuk memeriksa variabel yang tidak dikirim sebagai argumen (perbedaan besar adalah tipe pengecualian, sekarang menjadi
IllegalStateException
gantinya).testNullOrEmptyStringFieldState
testArgument
Ini adalah template umum untuk menguji suatu variabel. Butuh beberapa tahun untuk benar-benar belajar menghargai yang ini, sekarang saya sering menggunakannya (dalam kombinasi dengan template di atas tentu saja!)
Anda memasukkan nama variabel atau kondisi yang mengembalikan nilai, diikuti oleh operan ("==", "<", ">" dll) dan nilai atau variabel lain dan jika tes gagal, kode yang dihasilkan akan melempar IllegalArgumentException.
Alasan klausa if sedikit rumit, dengan seluruh ekspresi dibungkus dengan "! ()" Adalah untuk memungkinkan untuk menggunakan kembali kondisi pengujian dalam pesan pengecualian.
Mungkin akan membingungkan kolega, tetapi hanya jika mereka harus melihat kode, yang mungkin tidak harus mereka lakukan jika Anda melemparkan pengecualian semacam ini ...
Berikut ini contoh dengan array:
Anda mendapatkan hasil ini dengan memanggil templat, mengetik "from.length" [TAB] "== to.length".
Hasilnya jauh lebih lucu daripada "ArrayIndexOutOfBoundsException" atau serupa dan mungkin benar-benar memberi pengguna Anda kesempatan untuk mencari tahu masalahnya.
Nikmati!
sumber
Saya menggunakan ini untuk MessageFormat (menggunakan Java 1.4). Dengan begitu saya yakin bahwa saya tidak memiliki rangkaian yang sulit untuk diekstraksi ketika melakukan internasionalisasi
i18n
Juga untuk logging:
catatan
sumber
Beberapa favorit saya adalah ...
1: Javadoc, untuk menyisipkan dokumen tentang metode menjadi metode injeksi objek Musim Semi.
2: Jendela debug, untuk membuat FileOutputStream dan menulis konten buffer ke file. Digunakan ketika Anda ingin membandingkan buffer dengan run yang lalu (menggunakan BeyondCompare), atau jika Anda tidak dapat melihat konten buffer (melalui inspeksi) karena terlalu besar ...
sumber