Rumah >pembangunan bahagian belakang >Golang >Elakkan fungsi Go init

Elakkan fungsi Go init

Patricia Arquette
Patricia Arquetteasal
2024-12-19 11:24:18958semak imbas

Avoid the Go init function
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.

Apakah fungsi Init? ?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn