Saya punya beberapa kode Java dengan pernyataan SQL yang ditulis sebagai string Java (tolong jangan OR / M flamewars, SQL yang tertanam adalah apa adanya - bukan keputusan saya).
Saya telah memecah pernyataan SQL secara semantik menjadi beberapa string bersambung atas beberapa baris kode untuk kemudahan pemeliharaan. Jadi, bukannya sesuatu seperti:
String query = "SELECT FOO, BAR, BAZ FROM ABC WHERE BAR > 4";
Saya punya sesuatu seperti:
String query =
"SELECT FOO, BAR, BAZ" +
" FROM ABC " +
" WHERE BAR > 4 ";
Gaya ini membuat SQL lebih mudah dibaca dan dipelihara (IMHO), terutama untuk kueri yang lebih besar. Sebagai contoh, saya dapat menempatkan editor saya ke mode "menimpa" dan memodifikasi teks di tempat cukup mudah.
Perhatikan bahwa masalah ini menggeneralisasi di luar contoh khusus SQL. Kode apa pun yang ditulis dengan pemformatan vertikal apa pun, khususnya konstruksi tabular, rentan terhadap kehancuran oleh printer yang cantik.
Sekarang, beberapa anggota proyek menggunakan editor Eclipse dan pemformatan semantik sering dihancurkan ketika mereka memformat seluruh file sumber.
Apakah ada cara untuk menginstruksikan Eclipse untuk mengabaikan jalur sumber tertentu sehubungan dengan pemformatan?
Saya mencari sesuatu seperti komentar khusus yang mengubah formatter Eclipse. Idealnya, komentar seperti itu dapat dikonfigurasi untuk menjadi apa pun yang kita pilih, dan pemformat lain dapat diprogram untuk menghormatinya juga:
// STOP-ECLIPSE-FORMATTING
String query =
"SELECT FOO, BAR, BAZ" +
" FROM ABC " +
" WHERE BAR > 4 ";
// START-ECLIPSE-FORMATTING
Jelas, satu "solusi" adalah meminta anggota tim kami melakukan standarisasi pada beberapa formatter eksternal seperti Jalopy atau JIndent , tapi bukan itu yang dimaksud dengan pertanyaan ini (juga, bukan keputusan saya tentang proyek ini): Saya secara khusus mencari cara untuk hindari formatter Eclipse secara ad-hoc.
Idealnya, sebuah solusi akan memungkinkan saya untuk memasukkan instruksi untuk formatter Eclipse tanpa mengharuskan anggota tim menggunakan Eclipse untuk melakukan konfigurasi ulang IDE apa pun (selain dari kemungkinan memilih komentar perintah agnostik formatter: STOP-ECLIPSE-FORMATTING
→ STOP-FORMATTING
).
sumber
Jawaban:
Eclipse 3.6 memungkinkan Anda mematikan pemformatan dengan memberikan komentar khusus, seperti
On / off fitur harus diaktifkan "pada" dalam preferensi Eclipse: Java > Code Style > Formatter. Klik Edit, Off/On Tags, aktifkan Enable Off/On tags.
Dimungkinkan juga untuk mengubah string ajaib dalam preferensi - lihat dokumen Eclipse 3.6 di sini .
Informasi Lebih Lanjut
Java > Code Style > Formatter > Edit > Off/On Tags
Preferensi ini memungkinkan Anda untuk menetapkan satu tag untuk menonaktifkan dan satu tag untuk mengaktifkan formatter (lihat tab Off / On Tag di profil formatter Anda):
Anda juga harus mengaktifkan bendera dari Java Formatting
sumber
AFAIK dari Eclipse 3.5 M4 pada formatter memiliki opsi "Never Join Lines" yang mempertahankan jeda baris pengguna. Mungkin itu yang Anda inginkan.
Kalau tidak ada hack jelek ini
sumber
Lihat jawaban ini di SO .
Ada solusi lain yang dapat Anda gunakan untuk menekan pemformatan komentar blok tertentu. Gunakan
/*-
(perhatikan tanda hubung) di awal komentar blokir, dan pemformatan tidak akan terpengaruh jika Anda memformat sisa file.Sumber: Dokumentasi di Oracle .
sumber
Alih-alih mematikan pemformatan, Anda dapat mengonfigurasinya untuk tidak bergabung dengan garis yang sudah dibungkus. Mirip dengan respons Jitter, inilah untuk Eclipse STS:
Properti → Java Code Style → Formatter → Aktifkan pengaturan spesifik proyek ATAU Konfigurasikan Pengaturan Workspace → Edit → Pembungkus Baris (tab) → centang "Jangan pernah bergabung dengan baris yang sudah dibungkus"
Simpan, terapkan.
sumber
Anda harus mengaktifkan kemampuan untuk menambahkan tag formatter. Di menu men ke:
Windows → Preferences Java → Code Style → Formatter
Tekan Edittombolnya. Pilih tab terakhir. Perhatikan kotak Nyala / Mati dan aktifkan mereka dengan kotak centang.
sumber
Jika Anda meletakkan tanda plus di awal baris, itu memformat berbeda:
sumber
Saya menggunakan bagian string tetap lebar (diisi dengan spasi putih) untuk menghindari formatter mengacaukan indentasi string SQL saya. Ini memberi Anda hasil yang beragam, dan tidak akan berfungsi di mana spasi tidak diabaikan seperti di SQL, tetapi dapat membantu.
sumber
Akhiri setiap baris dengan garis miring ganda "//". Itu akan mencegah gerhana dari memindahkan mereka semua ke jalur yang sama.
sumber
Metode alternatif: Di Eclipse 3.6, di bawah "Pembungkus Baris" lalu "Pengaturan Umum" ada opsi untuk "Jangan pernah bergabung dengan saluran yang sudah dibungkus." Ini berarti pemformat akan membungkus garis panjang tetapi tidak membatalkan pembungkus yang sudah Anda miliki.
sumber
@xpmatteo memiliki jawaban untuk menonaktifkan sebagian kode, tetapi selain itu, pengaturan gerhana standar harus ditetapkan hanya untuk memformat baris kode yang diedit alih-alih seluruh file.
Ini akan mencegahnya terjadi sejak awal karena rekan kerja Anda memformat ulang kode yang sebenarnya tidak mereka ubah. Ini adalah praktik yang baik untuk mencegah kecelakaan yang membuat perbedaan pada kontrol sumber Anda tidak berguna (ketika seluruh file diformat ulang karena perbedaan pengaturan format kecil).
Ini juga akan mencegah pemformatan ulang jika opsi on / off tag dimatikan.
sumber
Komentar hantu, menambahkan di
//
mana Anda ingin baris baru, hebat!@Formatter: off menambahkan referensi dari kode ke editor. Menurut saya, kode tidak boleh memiliki referensi seperti itu.
Komentar hantu (//) akan berfungsi terlepas dari alat pemformatan yang digunakan. Terlepas dari Eclipse atau InteliJ atau editor apa pun yang Anda gunakan. Ini bahkan bekerja dengan Google Java Format yang sangat bagus
Komentar hantu (//) akan berfungsi di seluruh aplikasi Anda. Jika Anda juga memiliki Javascript dan mungkin menggunakan sesuatu seperti JSBeautifier . Anda dapat memiliki gaya kode serupa juga di Javascript.
Sebenarnya, Anda mungkin DO ingin memformat, bukan? Anda ingin menghapus tab / spasi campuran dan spasi tambahan. Anda ingin membuat indentasi baris sesuai dengan standar kode. Apa yang Anda TIDAK inginkan adalah garis panjang. Itu, dan hanya itu, yang diberikan oleh komentar hantu itu!
sumber
Retasan ini berfungsi:
Saya sarankan untuk tidak menggunakan formatter. Kode buruk seharusnya terlihat buruk, tidak terlalu bagus. Kode yang baik membutuhkan waktu. Anda tidak dapat menipu kualitas. Memformat adalah bagian dari kualitas kode sumber.
sumber