2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Go初心者の頃の自分に言いたいこと10個 ─ あの頃の自分、聞いてくれ

Posted at

Goを書き始めたばかりの頃、
正直こんな気持ちでした。

  • 「シンプルすぎて不安」
  • 「これ本当に正解なの?」
  • 「書き方、雑じゃない?」

でも今なら分かります。
あの時の自分は、だいたい全部ズレてた ということに。

今回は、
Go初心者だった頃の自分に“今だから言えること”を10個
供養も兼ねてまとめました。


① if err != nil は、減らそうとしなくていい

最初の頃は思ってました。

「エラーハンドリング多すぎじゃない?」

でも今なら言えます。

  • エラーは“制御フロー”
  • 隠さないから読みやすい
  • 後から追いやすい

try-catchが恋しくなる時期は、だいたい最初だけ です。


② interface は“先に切るな”

初心者の頃の自分へ。

「まだ1実装しかないのにinterface切るな」

Goのinterfaceは軽いけど、
必要になってから切れば十分

  • mockが必要になった
  • 実装が2つ以上出た
  • 境界を分けたい理由が言語化できた

この3つが揃ってからでいい。


③ struct は“ドメイン”として考えろ

「とりあえずstruct作るか」
→ だいたい失敗します。

structは

  • ただのデータ入れ物ではない
  • “意味”を持つ存在
  • ビジネスルールの塊

名前を考える時間は、無駄じゃない


④ goroutine は魔法じゃない

初心者あるある。

「並列にしたら速くなるでしょ!」

→ なりません。

  • 共有状態が増える
  • バグの温床になる
  • 終わらないgoroutineが生まれる

まずは 同期で正しく書く
並列はその後。


⑤ defer は便利だけど、考えなしに使うな

deferを書きすぎた結果、

  • 処理順が分からなくなる
  • パフォーマンスが微妙に落ちる
  • 「いつcloseされるんだっけ?」問題

便利なものほど、意識して使う


⑥ nil は怖がるものじゃない

nilは敵だと思ってました。

でも実際は、

  • 「状態がない」ことを表す
  • 明示的で分かりやすい
  • ゼロ値と組み合わせると強い

nilをどう扱うかが、Goらしさ


⑦ package は“フォルダ分け”じゃない

初心者の自分へ。

「packageは意味の塊で切れ」

  • 技術単位で分けない
  • レイヤーで切りすぎない
  • “責務”で考える

importが読みやすくなる=設計が良い


⑧ return は早くていい

「return多すぎでは?」
→ Goでは普通です。

  • ネストが減る
  • 読むストレスが減る
  • エラーがすぐ分かる

早く抜けるコードは、やさしいコード


⑨ テストは“後回し”にするな

初心者の頃は、

「動いたからOK」

だったけど、

  • テストがあると安心できる
  • リファクタが怖くなくなる
  • 設計が自然と良くなる

Goのテストは
思ってるより、だいぶ楽


⑩ Goは“賢く書く言語”じゃない

最後に一番言いたいこと。

Goは、

  • 書き手が賢く見える言語じゃない
  • でも、読み手にやさしい
  • チーム開発で本領を発揮する

「自分が書いて気持ちいい」より
「他人が読んで分かる」

これを受け入れた瞬間、
Goが一気に楽しくなりました。


まとめ:あの頃の自分へ

  • Goは“不親切”に見えて、実は親切
  • 迷ったらシンプルに戻れ
  • 抽象化は後でいい
  • 読みやすさは正義

もし今、
「Goむずいな…」と思っていたら、
それは順調にハマっている証拠 です。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?