Go言語入門:効果的なGo -Formatting-

スポンサーリンク
Go言語入門:効果的なGo -Formatting- ノウハウ
Go言語入門:効果的なGo -Formatting-
この記事は約4分で読めます。
よっしー
よっしー

こんにちは。よっしーです(^^)

本日は、Go言語を効果的に使うためのガイドラインについて解説しています。

スポンサーリンク

背景

Go言語を学び始めて、より良いコードを書きたいと思い、Go言語の公式ドキュメント「Effective Go」を知りました。これは、いわば「Goらしいコードの書き方指南書」になります。単に動くコードではなく、効率的で保守性の高いコードを書くためのベストプラクティスが詰まっているので、これを読んだ時の内容を備忘として残しました。

フォーマット

フォーマットの問題は最も議論を呼ぶものですが、最も重要性が低いものでもあります。人々は異なるフォーマットスタイルに適応できますが、その必要がない方が良いですし、全員が同じスタイルに従えば、このトピックに費やす時間も少なくなります。問題は、長大な規範的スタイルガイドなしに、このユートピアにどのようにアプローチするかです。

Goでは、珍しいアプローチを取り、フォーマットの問題のほとんどをマシンに任せています。gofmtプログラム(ソースファイルレベルではなくパッケージレベルで動作するgo fmtとしても利用可能)は、Goプログラムを読み込み、標準的なインデントと垂直配置のスタイルでソースを出力し、コメントを保持し、必要に応じて再フォーマットします。新しいレイアウト状況をどのように扱うか知りたい場合は、gofmtを実行してください。答えが正しくないように思える場合は、プログラムを再配置する(またはgofmtについてバグを報告する)べきであり、回避策を講じるべきではありません。

例として、構造体のフィールドのコメントを整列させるのに時間を費やす必要はありません。Gofmtがそれをやってくれます。以下の宣言が与えられた場合:

type T struct {
    name string // name of the object
    value int // its value
}

gofmtは列を整列させます:

type T struct {
    name    string // name of the object
    value   int    // its value
}

標準パッケージ内のすべてのGoコードはgofmtでフォーマットされています。

いくつかのフォーマットの詳細が残っています。非常に簡潔に述べると:

インデント インデントにはタブを使用し、gofmtはデフォルトでタブを出力します。どうしても必要な場合のみスペースを使用してください。

行の長さ Goには行の長さの制限がありません。パンチカードがオーバーフローすることを心配する必要はありません。行が長すぎると感じたら、折り返して追加のタブでインデントしてください。

括弧 GoはCやJavaよりも少ない括弧で済みます:制御構造(ifforswitch)の構文に括弧はありません。また、演算子の優先順位の階層がより短く明確なので、

x<<8 + y<<16

は、他の言語とは異なり、スペーシングが示唆する通りの意味になります。

重要ポイント

  1. 機械的なフォーマット
    • gofmtツールが自動的にコードをフォーマット
    • 手動でのスタイル調整は不要
  2. 統一されたスタイル
    • すべてのGoコードが同じフォーマットに従う
    • チーム間でのスタイル論争を排除
  3. シンプルなルール
    • タブによるインデント
    • 行の長さ制限なし
    • 最小限の括弧使用

実践的な意味

この哲学により、Go開発者は以下のメリットを得られます:

  • 時間の節約:フォーマットについて議論する時間が不要
  • 可読性の向上:すべてのコードが同じスタイルで統一
  • 自動化gofmtを実行するだけで標準的なスタイルに

gofmtの使用は、単なる推奨ではなく、Go開発における標準的な慣行です。これにより、コードのスタイルではなく、ロジックに集中できるようになります。

おわりに 

本日は、Go言語を効果的に使うためのガイドラインについて解説しました。

よっしー
よっしー

何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。

それでは、また明日お会いしましょう(^^)

コメント

タイトルとURLをコピーしました