ホームページ > バックエンド開発 > Golang > Go init 関数を避ける

Go init 関数を避ける

Patricia Arquette
リリース: 2024-12-19 11:24:18
オリジナル
958 人が閲覧しました

Avoid the Go init function
AIで生成された画像

私は、init 関数を使用している Go パッケージを見るたびに警戒します。 Init 関数は特定の状況では役立ちますが、ほとんどの人は誤用しています。

Init関数とは何ですか? ?

Go では、変数が初期化され値が設定された直後に、関数 init() がパッケージ初期化の一部として実行されます。

このプロセスは、パッケージ内のものが使用されているかどうかに関係なく、パッケージがインポートされる場合に発生します。

init 関数内に、あってはならないロジックが存在することがよくあります。

  • 構造体のインスタンスの作成

  • 構造体内にデータを取り込む

  • 他の依存関係の初期化

問題はテストです。

ハッピー パスをテストするのは十分簡単かもしれませんが、エラー シナリオについてはどうすればよいでしょうか?

条件が異なると動作が異なる可能性があるロジックを init 関数内に追加すると、これらのシナリオを再現することが困難になります。

信頼性の高いソフトウェアを構築するための鍵は、異なる入力で同じ関数を繰り返し実行し、異なる結果を検証するテストを作成することであることを覚えておいてください。 init 関数でそれを行うのは簡単ではないため、人々はそのようなテストを作成しません。

init 関数を使いすぎると、最終的にコードのテストと保守が難しくなり、信頼性が低くなります。

私のお勧めは、init 関数を完全に避けることです。通常は、New() 関数のようなコンストラクターを使用するのが適切な方法です。


以上がGo init 関数を避けるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート