15
gopher と学ぶ golang ~ go fmt 編 ~ 2013/11/29

gopherと学ぶgolang ~go fmt編~

Embed Size (px)

DESCRIPTION

第15回 Cloud Foundry 輪読会

Citation preview

Page 1: gopherと学ぶgolang ~go fmt編~

gopher と学ぶ golang ~ go fmt 編 ~

2013/11/29

Page 2: gopherと学ぶgolang ~go fmt編~

自己紹介

  Name : Sota Nakajima

  Twitter : @soldier_nakaji

 最近の活動 :

Page 3: gopherと学ぶgolang ~go fmt編~

golangとは

既存言語のアイデアをもとに生み出された

 新しいプログラミング言語 (2009/11/10 誕生 )

Page 4: gopherと学ぶgolang ~go fmt編~

golangの特徴

・早いコンパイル速度、実行速度

・メモリ管理 (GC)

・マルチコア活用 (goroutine)

・便利なコマンド

 ・整形 (go fmt)

 ・パッケージ収集 (go get)

 ・テスト (go test)

 ・ドキュメント作成・閲覧 (go doc)

 ・その他

Page 5: gopherと学ぶgolang ~go fmt編~

go fmtって?

・ go のコードを整形

・使い方は、 $go fmt ファイル名

  ※ $go fmt ./... とするとカレントディレクトリ

    以下の全ファイルに対し実行

  ※ ... は / を含めたワイルドカード

Page 6: gopherと学ぶgolang ~go fmt編~

go fmt誕生の経緯

全てのコーディング規約論争を生まれる前に消し去りたい

Page 7: gopherと学ぶgolang ~go fmt編~

go fmt誕生の経緯

全てのコーディング規約論争を生まれる前に消し去りたい

Page 8: gopherと学ぶgolang ~go fmt編~

go fmtの特徴1

・余計な () や ; 許さない、 { の後は強制改行

- if (a == b) { fmt.Println("Hello, 世界 "); }

+ if a == b {

+ fmt.Println("Hello, 世界 ")

+ }

Page 9: gopherと学ぶgolang ~go fmt編~

go fmtの特徴2

・ import 文の記述順入れ替え

import (

- "strings"

"fmt"

+ "strings"

)

Page 10: gopherと学ぶgolang ~go fmt編~

go fmtの特徴3

・改行コードを LF に変換

・ハードタブでインデント

 (差分略)

Page 11: gopherと学ぶgolang ~go fmt編~

ソフトタブも使える、が・・

$ gofmt -tabs=false -tabwidth=4 -l -w ファイル名

しかし、

http://golang.org/doc/effective_go.html

訳)インデントはデフォルトで tab を使います。

スペースはどうしても必要なときだけ使ってね。

Indentation

We use tabs for indentation and gofmt emits them by default. Use spaces only if you must.

Page 12: gopherと学ぶgolang ~go fmt編~

ソフトタブも使える、が・・

$ gofmt -tabs=false -tabwidth=4 -l -w ファイル名

しかし、

http://golang.org/doc/effective_go.html

訳)インデントはデフォルトで tab を使います。

スペースはどうしても必要なときだけ使ってね。

Indentation

We use tabs for indentation and gofmt emits them by default. Use spaces only if you must.

Page 13: gopherと学ぶgolang ~go fmt編~

結局、使うなってこと?

・「どのオプションでフォーマットしても良い」状態は良くない

  => 他人のソースを go fmt したらバージョン

   管理システムで差分発生

  => オプション合わせるためにワンアクション    増える

・ golang 開発側はベースとなる立場を示した

Page 14: gopherと学ぶgolang ~go fmt編~

結論

・バージョン管理システムに commit する前に必ず go fmt 。ソフトタブは極力使わない

※ ファイル保存時などに自動的に go fmt してくれる仕組みを使うのがオススメ

 ・ IDE

 ・テキストエディタの GoPlugin

 ・ git hook

Page 15: gopherと学ぶgolang ~go fmt編~

おわり