【架构优化】用 slices.Contains 简化 runeval/facts.go 中的 appendUnique 并补充单元测试
维护者通常 1 天内回复
评估
调研方向
Read internal/runeval/facts.go and inspect the existing appendUnique function and its BuildFacts caller. An open pull request #417 is already linked, so check its status before taking up the work; the issue’s stated completion criteria are the table-driven tests for the listed cases and passing gofmt, go vet ./internal/runeval/, and go test -cover ./internal/runeval/.
由索引模型根据 Issue 内容生成。
描述
现状问题
internal/runeval/facts.go 中的 appendUnique 用手写 for 循环判断切片是否已包含某值,再决定是否追加。Go 1.21+ 标准库 slices.Contains 已提供等价能力(仓库 go.mod 为 1.26),手写循环增加了阅读负担,与仓库内其他已统一到 slices.Contains 的写法不一致。
重构方案
appendUnique改为if slices.Contains(list, value) { return list }; return append(list, value),导入slices。- 函数签名与语义(已存在则原样返回、不存在追加到末尾、保持顺序)不变,唯一调用方
BuildFacts无需改动。 - 新增表驱动单元测试覆盖:空切片/nil、已存在、不存在、追加后顺序、空字符串值。
影响范围
仅 internal/runeval/facts.go 一个函数及新增测试文件;不改对外接口与行为。
验证方式
gofmt、go vet ./internal/runeval/、go test -cover ./internal/runeval/。
- 主要语言
- Go
- 星标
- 141
- 派生
- 28
- 平均合并
- 1 天 15 小时
- 30 天内合并 PR
- 113
环境准备
- 提供 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
Tencent/LoopForge 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 74/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 75/100
维护者通常 1 天内回复
-
[Bug]: 官方镜像未安装 wecom-cli,企业微信通知报「通知服务未安装 wecom-cli」可能已有人在做 @newexploreor 于 1 天前认领。 未关闭bug
难度 2/5 1-3 小时 新手友好度 76/100
Tencent/LoopForge#156 · 1 条评论 · 已指派 1 人 ·
维护者通常 1 天内回复
-
【架构优化】合并 gitwork/workbranch.go 中 push/pull 重复的默认提交身份注入为 withFallbackIdentity可能已有人在做 @fx-kurumi 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 40/100
维护者通常 1 天内回复
-
【架构优化】从 runtime.installNPMCLI 中拆出 npm 参数拼装 npmCLIInstallArgs 与安装结果启用 activateNPMStage可能已有人在做 @fx-kurumi 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 30/100
维护者通常 1 天内回复
查看 Tencent/LoopForge 的全部 Issue
相似的 Issue
-
team:library-maintainers
难度 2/5 1-3 小时 新手友好度 82/100
padok-team/burrito#1208 · 1 条评论 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 62/100
bazel-contrib/rules_go#4784 · 1 条评论 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 75/100
-
难度 2/5 1-3 小时 新手友好度 62/100
POSIdev-community/aictl#40 ·
-
难度 1/5 1 小时以内 新手友好度 62/100
prime-radiant-inc/evener#6306 ·
维护者通常 1 天内回复