Imej dijana dengan AI
Saya menjadi berhati-hati apabila saya melihat pakej Go menggunakan fungsi init. Fungsi Init boleh membantu dalam situasi tertentu, tetapi kebanyakan orang menyalahgunakannya.
Dalam Go, fungsi init() dilaksanakan sebagai sebahagian daripada permulaan pakej sejurus selepas pembolehubah dimulakan dan nilai ditetapkan.
Proses ini berlaku jika pakej diimport tanpa mengira apa yang digunakan dalam pakej.
Saya sering melihat logik dalam fungsi init yang tidak sepatutnya ada.
Mencipta kejadian struct
Mengisi data dalam struct
Pemulaan tanggungan lain
Masalahnya sedang menguji.
Menguji laluan gembira mungkin cukup mudah, tetapi bagaimana pula dengan senario ralat?
Jika anda menambah logik dalam fungsi init yang boleh berkelakuan berbeza dalam keadaan berbeza, ia menjadi mencabar untuk menduplikasi senario ini.
Ingat, kunci untuk membina perisian yang boleh dipercayai ialah menulis ujian yang menjalankan fungsi yang sama berulang kali dengan input yang berbeza untuk mengesahkan hasil yang berbeza. Bukan mudah untuk melakukannya dengan fungsi init, jadi orang ramai tidak menulis ujian tersebut.
Menggunakan fungsi init secara berlebihan akhirnya menjadikan kod lebih sukar untuk diuji dan diselenggara serta tidak boleh dipercayai.
Cadangan saya adalah untuk mengelakkan fungsi init sama sekali. Biasanya, menggunakan pembina seperti fungsi New() ialah cara untuk pergi.
Atas ialah kandungan terperinci Elakkan fungsi Go init. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!