1. Gula sintaksis
Pemrogram suka ketika beberapa kode atau logika kompleks dapat ditulis dalam beberapa baris, membuat kode menjadi ringkas dan mudah dibaca. Dan pencipta bahasa pemrograman terkadang membantu dalam hal ini.
Fitur bahasa apik yang memungkinkan Anda mengambil jalan pintas (menulis lebih sedikit kode) disebut gula sintaksis . Tapi, sejujurnya, di Jawa sangat sedikit.
Pencipta Java melakukan semua yang mereka bisa untuk menghilangkan redundansi di Jawa. Jika C++ memungkinkan Anda melakukan sesuatu dengan 20 cara, maka Java memungkinkan Anda melakukannya hanya dengan satu cara.
Tetapi baik pemrogram Java maupun pencipta Java tidak menyukai kurangnya kebebasan. Dan terkadang gula membuat hidup lebih mudah bagi orang biasa seperti Anda dan saya.
Omong-omong, Anda telah menemukan beberapa gula sintaksis: autoboxing dan unboxing . Mari kita bandingkan:
Kode panjang | Kode ringkas |
---|---|
|
|
|
|
|
|
Alih-alih kode panjang seperti di sebelah kiri, Anda dapat menulis kode yang lebih ringkas di sebelah kanan. Dan kompiler Java yang cerdas akan menghasilkan versi kode verbose berdasarkan versi singkat dari kode tersebut. Inilah tepatnya gula sintaksis.
2. Inferensi tipe variabel: kata var
kunci
Di Java 11, kompiler menjadi lebih pintar dan sekarang dapat menentukan jenis variabel yang dideklarasikan berdasarkan jenis nilai yang diberikan padanya . Dalam kode, tampilannya seperti ini:
var name = value;
Di mana name
nama variabel baru, nilai adalah nilai awalnya, dan var
kata kunci yang digunakan untuk mendeklarasikan variabel. Jenis variabel nama akan sama dengan jenis nilai yang diberikan padanya.
Contoh:
Bagaimana kita melihat kodenya | Apa yang dilihat oleh kompiler |
---|---|
|
|
|
|
|
|
|
|
|
|
Kompiler itu sendiri menentukan, atau menyimpulkan, tipe variabel berdasarkan nilai yang diberikan padanya.
Pemrogram memperdebatkan dengan panas apakah akan menambahkan fitur seperti itu ke bahasa. Banyak orang takut itu var
akan disalahgunakan dan sebagai akibatnya keterbacaan kode akan terganggu.
Ada sedikit kebenaran untuk ini, jadi yang terbaik adalah menggunakan var
yang meningkatkan keterbacaan kode. Misalnya, ini dalam dua kasus:
Kasus 1: Melihat nilai yang diberikan ke variabel, tipe variabel langsung jelas
Kode | Penjelasan |
---|---|
|
Variabelnya adalah sebuahInputStream |
|
Variabelnya adalah aString |
Dalam kasus ini, Anda tidak boleh menggunakan var
. Nah, apa jenis variabelnya?
Kode | Penjelasan |
---|---|
|
Sulit untuk menentukan jenis variabel |
|
Sulit untuk menentukan jenis variabel |
Kasus 2: Jenis variabel tidak penting untuk memahami kode
Kode seringkali tidak perlu memanggil metode pada variabel, misalnya ketika variabel hanya digunakan untuk menyimpan sesuatu untuk sementara. Dalam hal ini, menggunakan var
pasti tidak mengurangi keterbacaan kode:
Kode panjang | Kode ringkas |
---|---|
|
Kami mendapat metadata dari stream aliran dan menyimpannya di storage repositori. Jenis spesifik variabel data tidak penting. |
Makna emas
Sekarang saya akan memberikan tiga cara untuk menulis kode yang sama. Menggunakan var
akan menjadi pilihan terbaik.
Kode | Catatan |
---|---|
|
Terlalu kompak |
|
Tepat |
|
Terlalu detail |
Pindah dari versi dengan 1 baris ke versi dengan 2 baris, kami membuat kode sedikit lebih mudah dibaca dengan menggunakan nama variabel ( headerInfo
). Sekarang sudah jelas bahwa metode mengembalikan bukan hanya informasi meta, tetapi juga informasi header.
Versi ketiga terlalu bertele-tele. Fakta bahwa headerInfo
a FileMetaInfo
sudah cukup jelas dari metodenya getFileMetaInfo()
. Tujuan dari informasi meta jauh lebih menarik.
3. Menghilangkan tipe dengan operator berlian:<>
Bahkan sebelum var
operator muncul, ada upaya untuk mengajari kompiler cara menyimpulkan tipe koleksi. Anda akan setuju bahwa notasi ini terlihat sedikit berlebihan:
ArrayList<String> list = new ArrayList<String>();
Mulai dari versi ketujuh Java, saat menulis tipe koleksi, Anda bisa menghilangkan tipe elemen koleksi jika ditentukan saat mendeklarasikan variabel. Dengan kata lain, kode di atas dapat ditulis dalam bentuk yang sedikit disingkat:
ArrayList<String> list = new ArrayList<>();
Seperti yang Anda lihat, Anda tidak perlu lagi menulis String untuk kedua kalinya. Tidak sekeren dengan operator var, tapi sepertinya kemajuan saat itu.
Kurung sudut kosong dalam tipe koleksi disebut operator berlian , karena dua kurung sudut secara samar menyerupai berlian.
Tidak diinginkan untuk menggunakan var
kata kunci dan operator intan secara bersamaan :
var list = new ArrayList<>();
Tidak ada informasi sama sekali tentang jenis elemen yang disimpan dalam koleksi, dan jenis koleksinya adalah ArrayList < Object >.
4. Kurung kurawal ganda
Ingat inisialisasi larik cepat?
Kami baru saja mencantumkan nilai dalam kurung kurawal, seperti ini:
Contoh |
---|
|
|
Pencipta Java menyukai ide menggunakan kurung kurawal untuk menyederhanakan penulisan elemen array. Tapi bagaimana dengan koleksi?
Pembuat Java juga memiliki pemikiran kreatif yang cukup untuk koleksi, memungkinkan mereka menggunakan trik dengan kurung kurawal ganda.
Dengan gula | Tanpa gula |
---|---|
|
|
Jika kompiler menemukan kode seperti pada contoh di sebelah kiri, maka ia mengubahnya menjadi kode di sebelah kanan.
Kode tidak menjadi jauh lebih kompak. Penghematan di sini cukup kecil: Anda tidak perlu menulis list
setiap saat. Ini dapat membantu jika nama variabel sangat panjang.
Tetapi jika Anda menemukan kode seperti ini dalam sebuah proyek, jangan kaget 🙂
GO TO FULL VERSION