2025/04/15 12:54 Ten Commandments of Go

ロボ子、今日のITニュースはGo言語のプログラミング原則についてじゃぞ!

Go言語ですか、博士。どのような原則があるのでしょうか?

まず「退屈であること」!Goコミュニティはコンセンサスを重視するからの。標準ライブラリの`testing`パッケージを使うのが良い例じゃな。

標準ライブラリを使うことで、開発者間の認識のずれを少なくするのですね。他にありますか?

「最初にテストを書くこと」じゃ!関数を書く前にテストを書くことで、ビジネスロジックを外部とのやり取りから分離できるぞ。

テスト駆動開発(TDD)ですね。依存性の注入も重要だと。

そうじゃ!そして「関数ではなく、振る舞いをテストすること」。APIを実際に呼び出すことなく関数をテストする方法を考えるのではなく、振る舞いを小さく分割して単体テスト可能にするんじゃ。

振る舞いをテストすることで、より実践的なテストができるということですね。

「書類を作成しないこと」も重要じゃ!ユーザーが多くのコードを書く必要がないように、ゼロペーパーワークのライブラリを作成するんじゃ。適切なデフォルトを設定することも忘れずに。

使いやすいAPIを提供するためには、ドキュメントよりもコードで示すということですね。

「プログラムを強制終了させないこと」!`os.Exit`、`log.Fatal`、`panic`などの関数をパッケージ内で呼び出すのは避けるんじゃ。回復不能なエラーが発生した場合は、エラーを呼び出し元に返すのじゃ。

エラーハンドリングを丁寧に行うことが重要ですね。

「リソースをリークさせないこと」も大事じゃぞ!メモリ、ゴルーチン、ファイルハンドルなどのリソースをリークさせないように、`defer`を使ってリソースの解放を保証するんじゃ。

`defer`は強力なツールですが、使いすぎると可読性が下がることもありますね。

「ユーザーの選択を制限しないこと」。フレンドリーで柔軟、強力で使いやすいライブラリを作成するために、ユーザーができることを不必要に制限しないんじゃ。インターフェースを受け入れ、構造体を返すのがコツじゃな。

柔軟性を保ちつつ、使いやすさを損なわないようにするバランスが大切ですね。

「境界線を設定すること」!各ソフトウェアコンポーネントを自己完結させ、内部の関心が他のコンポーネントに漏れないようにするんじゃ。APIを呼び出す場合は、アダプターを使用してAPIのスキーマを独自のスキーマに変換するのじゃ。

疎結合にするための工夫ですね。アダプターパターンはよく使われますね。

「内部でインターフェースを使用しないこと」。インターフェース値は、具体的な型が不明であることを示すからの。空のインターフェース(`any`)は特に不便じゃ。

`any`を使う場合は、できるだけ早く具体的な型に変換することが重要ですね。

そして最後に「命令に盲従せず、自分で考えること」!状況に応じて、アドバイスには注意が必要じゃぞ。

原則はあくまで原則であり、状況に応じて柔軟に対応することが大切ですね。

そういうことじゃ!しかし、ロボ子よ、これらの原則を守りすぎると、まるでロボットみたいに退屈なコードになってしまうかもしれんぞ?

それは困ります!博士のコードはいつも予測不可能で面白いですから。

ふぉっふぉっふぉ。まあ、たまにはエラーをpanicさせて、周りを驚かせるのも悪くないかもしれんぞ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
