【架构优化】拆分 scriptview.parseConfig 的模式校验、掩码列表校验并合并重复的排序比较函数

Ouverte
#440 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

@fx-kurumi y travaille déjà.

Depuis le 13/11/2026.

  • #442 par @fx-kurumi — ouverte

Évaluation

Difficulté
3/5
Temps estimé
1-3 heures
Accessibilité débutants
25/100
Type d'issue
Refactorisation
Clarté
Clairement spécifiée
Activité
Active
Stack technique
go
Domaine
tooling

Piste de recherche

Start with parseConfig in internal/scriptview/scriptview.go, where the mode checks, the masks/hide validation and the two slices.SortFunc comparators sit together. Extract the checks into the helper functions the issue names and merge the comparators, then confirm the existing TestConfig* and TestRefresh* tests still pass. Note that PR #442 is already open against this issue, so coordinate with it before starting a parallel change.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

现状问题

internal/scriptview/scriptview.go 的 parseConfig 约 50 行,同时做了四件事:JSON 解码、执行/刷新模式校验与 argv 空字节检查、masks/hide 列表合法性与去重校验、两个列表的排序。其中两段 slices.SortFunc 的比较函数几乎一样(只是长度升序/降序相反),重复书写,阅读时不容易看出两者的差别。

重构方案

  • 拆出 validateConfigMode(config Config) error:刷新/执行两种模式的互斥校验 + argv 空字节检查;
  • 拆出 validateMaskLists(lists ...[]string) error:每个列表的 ValidMask 与去重检查;
  • 两处排序比较函数合并为 maskOrder(longestFirst bool) func(a, b string) int;
  • parseConfig 只保留解码与依次调用,错误文案、返回值、排序结果均保持不变。

影响范围

仅 internal/scriptview/scriptview.go 与对应测试文件,不改导出接口与行为。

验证方式

  • 现有 TestConfig* / TestRefresh* 测试全部通过;
  • 新增单测覆盖 maskOrder 的两种顺序(含同长度按字典序)和 validateMaskLists 的重复/非法项;
  • gofmt、go vet ./internal/scriptview/、go test ./internal/scriptview/ 通过。
Langage dominant
Go
Étoiles
141
Forks
28
Merge moyen
1 j 15 h
PR mergées (30 j)
113

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de Tencent/LoopForge

Toutes les issues de Tencent/LoopForge

Issues similaires

Plus d'issues Go

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.