Lapis Lazuli

technical blog for web developer

【Go】ロジックより型から読み取れるようにする

最近、コードレビューで突っ込まれて「なるほどな〜」と思った事があります。
今まであまり意識したことは無かったのですが・・・

型からコードの意味を読み取れるようにする。

ということです。
熟練のエンジニアの方からしたら「当然だろ」と思われるかもしれませんが・・・
今までformからPOSTしたり、DBから取得したフラグデータはそのままifなどで判別していました。

if data == 0 {
// 何らかの処理
} else if data == 1 {
// 何らかの処理
}

こんな感じですね。
これだと0と1が何の情報を表すのかが分かりづらいとのことでした。
結局データの元を辿らないといけないですしね。(formだったらHTML、DBならカラム)しかもカラムに説明が無かったりしたら、もう知ってる人に聞くかドキュメント見るしかありません。
これってかなり面倒ですよね。

なのでこの場合(Go言語)ですと、typeを生成してわかりやすくしましょうと。

type ColorListType int64

const (
	Red ColorListType = 0
	Blue ColorListType = 1
)

switch ColorListType(type) {
case Red:
        // 何らかの処理
case Blue:
        // 何らかの処理
}

上記のように書き換えます。
ぱっと見で何を条件に使っているのが一目瞭然ですね。赤の場合と青の場合で処理を切り分けてる訳です。
コードレビューを受けると結構勉強になることが多い(優秀な人にやってもらうと尚更)ので、これからもどんどん吸収していきたいですね。