// Before: 同じ文字列が複数箇所に散在 funcCreateUser(db *sql.DB, name string)error { _, err := db.Exec("INSERT INTO users (name) VALUES ($1)", name) if err != nil { return fmt.Errorf("insert into users: %w", err) } returnnil }
funcDeleteUser(db *sql.DB, id string)error { _, err := db.Exec("DELETE FROM users WHERE id = $1", id) if err != nil { return fmt.Errorf("delete from users: %w", err) } returnnil }
funcCountUsers(db *sql.DB) (int, error) { var count int err := db.QueryRow("SELECT COUNT(*) FROM users").Scan(&count) if err != nil { return0, fmt.Errorf("count users: %w", err) } return count, nil }
1 2 3 4 5 6 7 8 9 10 11
// After: テーブル名を定数化 const tableUsers = "users"
funcCreateUser(db *sql.DB, name string)error { query := fmt.Sprintf("INSERT INTO %s (name) VALUES ($1)", tableUsers) _, err := db.Exec(query, name) if err != nil { return fmt.Errorf("insert into %s: %w", tableUsers, err) } returnnil }