AIで生成された画像
私は、init 関数を使用している Go パッケージを見るたびに警戒します。 Init 関数は特定の状況では役立ちますが、ほとんどの人は誤用しています。
Go では、変数が初期化され値が設定された直後に、関数 init() がパッケージ初期化の一部として実行されます。
このプロセスは、パッケージ内のものが使用されているかどうかに関係なく、パッケージがインポートされる場合に発生します。
init 関数内に、あってはならないロジックが存在することがよくあります。
構造体のインスタンスの作成
構造体内にデータを取り込む
他の依存関係の初期化
問題はテストです。
ハッピー パスをテストするのは十分簡単かもしれませんが、エラー シナリオについてはどうすればよいでしょうか?
条件が異なると動作が異なる可能性があるロジックを init 関数内に追加すると、これらのシナリオを再現することが困難になります。
信頼性の高いソフトウェアを構築するための鍵は、異なる入力で同じ関数を繰り返し実行し、異なる結果を検証するテストを作成することであることを覚えておいてください。 init 関数でそれを行うのは簡単ではないため、人々はそのようなテストを作成しません。
init 関数を使いすぎると、最終的にコードのテストと保守が難しくなり、信頼性が低くなります。
私のお勧めは、init 関数を完全に避けることです。通常は、New() 関数のようなコンストラクターを使用するのが適切な方法です。
以上がGo init 関数を避けるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。