【架构优化】合并 preview/config.go 中 intFromEnv/int64FromEnv 重复的环境变量正整数解析

Đang mở
#411 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

@fx-kurumi đang làm issue này rồi.

Từ ngày 13/11/2026.

  • #412 của @fx-kurumi — đang mở

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
25/100
Loại issue
Tái cấu trúc
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
go
Lĩnh vực
tooling

Hướng nghiên cứu

Read internal/preview/config.go and compare intFromEnv with int64FromEnv; the issue also specifies the shared helper signature and wrapper behavior. Check the proposed cases in internal/preview/config_env_int_test.go, then run gofmt, go vet ./internal/preview/, and go test -cover ./internal/preview/. Done means the parsing logic is shared while existing behavior is preserved; note that pull request #412 is already open.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

现状问题

internal/preview/config.go 中 intFromEnv 与 int64FromEnv 两个函数逐行重复:都是「读环境变量 → TrimSpace → 为空回退 → 解析十进制整数 → 解析失败或 ≤0 回退」,区别仅在于一个用 strconv.Atoi、一个用 strconv.ParseInt(raw, 10, 64)。后续若调整解析规则(如允许 0、加日志)需要两处同步修改,容易漂移。

重构方案

  • 新增包内私有函数 positiveIntFromEnv(key string, fallback int64, bitSize int) int64,承载唯一一份解析逻辑。
  • intFromEnv 改为 int(positiveIntFromEnv(key, int64(fallback), strconv.IntSize));int64FromEnv 改为 positiveIntFromEnv(key, fallback, 64)。
  • 两个原函数签名不变,LoadConfig 等调用方无需改动。
  • strconv.Atoi 等价于 ParseInt(s, 10, strconv.IntSize)(溢出同样报错),因此行为完全一致。

影响范围

仅 internal/preview/config.go(包内私有函数)及新增测试文件,不涉及对外接口、配置项或默认值。

验证方式

  • 新增 internal/preview/config_env_int_test.go:表驱动覆盖空值、空白、合法值、前后空格、0、负数、非法字符、小数、超 int32 的大数、int64 溢出;另测 bitSize 溢出回退。
  • gofmt、go vet ./internal/preview/、go test -cover ./internal/preview/ 全部通过。
Ngôn ngữ chính
Go
Star
141
Fork
28
Merge trung bình
1 ngày 15 giờ
Pull request đã merge (30 ngày)
113

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của Tencent/LoopForge

Tất cả issue của Tencent/LoopForge

Issue tương tự

Thêm issue về Go

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.