Saya telah mengembangkan di Groovy untuk sementara waktu sekarang dan saya bertanya-tanya seberapa sering saya harus menggunakan casting dinamis def
? Seorang rekan kerja saya percaya kita harus selalu menggunakannya karena itu membantu Groovy dalam beberapa hal yang saya tidak mengerti.
Saat ini, ketika mendeklarasikan metode mengembalikan tipe dan argumen, saya suka menyatakan dengan sengaja objek mana yang harus diambil dan dimuntahkan (untuk keterbacaan kode dan saya berasal dari latar belakang Java, masuk akal bagi saya) contoh:
String doSomething(String something){
//code
}
// vs
def doSomething(def somthing){
//code
}
// vs
def doSomething(somthing){
// code
}
Jadi saya kira pertanyaan saya apakah ini hanya pilihan kapan akan digunakan def
atau adakah keuntungan nyata untuk menggunakannya sepanjang waktu? (Saya menambahkan contoh terakhir karena saya merasa cocok dengan pertanyaan sebagai pilihan yang layak untuk Groovy)
Jawaban:
Sebagai praktik pemrograman yang baik (bahkan scripting), selalu pertimbangkan untuk menentukan tipe tertentu (walaupun tidak harus nyata) untuk suatu variabel. Gunakan
def
hanya jika tidak ada tipe pasti yang berlaku untuk variabel.Karena OP tahu Java, tidak ada bedanya dengan menentukan jenis
Object
(meskipun tampaknya ada perbedaan kecil ). Maka jawaban untuk pertanyaan ini tidak akan berbeda dari menjawab pertanyaan seperti: "mengapa tidak selalu menggunakanObject
tipe di Jawa?"Menjadi pasti tentang jenis mungkin mengurangi kemungkinan bug, dan bahkan berfungsi sebagai dokumentasi diri. Padahal, jika seseorang sengaja mengimplementasikan logika dinamis, maka menggunakan
def
mungkin masuk akal. Itu sebenarnya salah satu kekuatan terbesar Groovy; program dapat diketik secara dinamis atau statis seperti yang dibutuhkan! Hanya saja, jangan biarkan kemalasan menjadi alasan untuk menggunakandef
;-)Misalnya metode ini masuk akal dengan tipe argumen yang pasti dan jenis kembali:
sementara metode ini masuk akal dengan tipe
def
sumber
Setiap kali kode yang Anda tulis akan digunakan oleh orang lain sebagai API publik, Anda harus selalu mendukung penggunaan pengetikan yang kuat, ini membantu membuat kontrak lebih kuat, menghindari kemungkinan kesalahan ketik argumen yang dilewati, memberikan dokumentasi yang lebih baik, dan juga membantu IDE dengan penyelesaian kode. Setiap kali kode hanya untuk Anda gunakan, seperti metode pribadi, atau ketika IDE dapat dengan mudah menyimpulkan jenisnya, maka Anda lebih bebas untuk memutuskan kapan mengetik atau tidak.
sumber