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