Untuk membuat pertanyaan ini dapat dijawab, mari kita asumsikan bahwa biaya ambiguitas dalam pikiran seorang programmer jauh lebih mahal daripada beberapa penekanan tombol tambahan.
Mengingat hal itu, mengapa saya membiarkan teman satu tim pergi tanpa membuat anotasi parameter fungsi mereka? Ambil kode berikut sebagai contoh kode yang mungkin jauh lebih kompleks:
let foo x y = x + y
Sekarang, pemeriksaan cepat tooltip akan menunjukkan kepada Anda bahwa F # telah menentukan Anda dimaksudkan untuk x dan y sebagai int. Jika itu yang Anda maksudkan, maka semuanya baik-baik saja. Tapi saya tidak tahu apakah itu yang Anda maksudkan. Bagaimana jika Anda telah membuat kode ini untuk menggabungkan dua string bersama? Atau bagaimana jika saya pikir Anda mungkin bermaksud menambah ganda? Atau bagaimana jika saya tidak ingin harus mengarahkan mouse ke setiap parameter fungsi tunggal untuk menentukan tipenya?
Sekarang ambil ini sebagai contoh:
let foo x y = "result: " + x + y
F # sekarang mengasumsikan Anda mungkin bermaksud untuk menggabungkan string, jadi x dan y didefinisikan sebagai string. Namun, sebagai orang bodoh yang menjaga kode Anda, saya mungkin melihat ini dan bertanya-tanya apakah mungkin Anda bermaksud untuk menambahkan x dan y (ints) bersama-sama dan kemudian menambahkan hasilnya ke string untuk keperluan UI.
Tentu saja untuk contoh sederhana seperti itu orang bisa membiarkannya pergi, tetapi mengapa tidak menegakkan kebijakan anotasi jenis eksplisit?
let foo (x:string) (y:string) = "result: " + x + y
Apa salahnya menjadi tidak ambigu? Tentu, seorang programmer dapat memilih jenis yang salah untuk apa yang mereka coba lakukan, tetapi setidaknya saya tahu mereka bermaksud, bahwa itu bukan hanya kekhilafan.
Ini adalah pertanyaan serius ... Saya masih sangat baru di F # dan sedang mencari jalan untuk perusahaan saya. Standar yang saya adopsi kemungkinan akan menjadi dasar untuk semua F # coding masa depan, tertanam dalam copy-paste tanpa akhir yang saya yakin akan menembus budaya selama bertahun-tahun yang akan datang.
Jadi ... apakah ada sesuatu yang istimewa tentang inferensi tipe F # yang menjadikannya fitur yang berharga untuk dipertahankan, hanya memberi catatan jika diperlukan? Atau apakah pakar F # membiasakan membubuhi keterangan parameter mereka untuk aplikasi non-sepele?