鱒身(Masu_mi)のブログ

知った事をメモする場所。

ダメな定数

恥を晒しておく。最近、馬鹿な定数を定義してしまった。

定数化によって、マジックナンバー・リテラルを減らすことの目的には、コード修正時の変更箇所を減らしたりコンパイラに検証を任せられる様にすることが含まれる。 またフォーマット文字列の場合は、書式指定子と後続の引数の間で意味的な関係があり切り離すと関連を追い辛く変更箇所が増えてしまう。

そのため、だいたいの場合でフォーマット文字列は定数にせずにプロシージャに閉じ込める方が良い。

良い歳して考えずに定数化した自分が恥ずかしい。。

const format = "%s/%s/%s/hoge"

func Main() {
  fmt.Sprintf(format, "name", "number", "book")
  // ...
  // ...
  fmt.Sprintf(format, "name2", "number2", "book2")
}