Pertanyaannya adalah, apa saja kasus penggunaan dari operator konversi tipe implisit yang tidak akan membuat kode saya jauh lebih sulit untuk dipahami?
Ketika jenisnya tidak terkait (untuk programmer). Ada skenario (jarang) di mana Anda memiliki dua jenis yang tidak terkait (sejauh kode terkait), yang sebenarnya terkait (sejauh domain atau programmer yang masuk akal) yang bersangkutan.
Misalnya, beberapa kode melakukan pencocokan string. Skenario umum adalah mencocokkan string literal. Alih-alih menelepon IsMatch(input, new Literal("some string"))
, konversi implisit memungkinkan Anda menyingkirkan upacara itu - suara dalam kode - dan fokus pada string literal.
Sebagian besar programmer akan melihat IsMatch(input, "some string")
dan dengan cepat memahami apa yang sedang terjadi. Itu membuat kode Anda lebih jelas di situs panggilan. Singkatnya, itu membuat sedikit lebih mudah untuk memahami apa yang sedang terjadi, dengan sedikit biaya bagaimana itu terjadi.
Sekarang, Anda mungkin berpendapat bahwa fungsi sederhana kelebihan beban untuk melakukan hal yang sama akan lebih baik. Dan itu. Tetapi jika hal semacam ini ada di mana-mana, maka memiliki satu konversi lebih bersih (lebih sedikit kode, meningkatkan konsistensi) daripada melakukan tumpukan fungsi yang berlebihan.
Dan Anda mungkin berpendapat bahwa lebih baik meminta programmer untuk secara eksplisit membuat tipe perantara sehingga mereka melihat "apa yang sebenarnya terjadi". Itu kurang mudah. Secara pribadi, saya berpikir bahwa contoh pencocokan string literal sangat jelas tentang "apa yang sebenarnya terjadi" - programmer tidak perlu tahu mekanisme tentang bagaimana semuanya terjadi. Apakah Anda tahu bagaimana semua kode Anda dijalankan oleh berbagai prosesor yang dijalankan oleh kode Anda? Selalu ada garis abstraksi di mana programmer berhenti peduli tentang bagaimana sesuatu bekerja. Jika Anda berpikir bahwa langkah-langkah konversi implisit penting, maka jangan gunakan konversi implisit. Jika Anda pikir mereka hanya upacara untuk menjaga komputer bahagia, dan programmer akan lebih baik tidak melihat suara itu di mana-mana,