review(panels+size): 面板结构收敛收尾、审查清理、新增平行数组护栏
一、审查清理 * `PlotView::FreeMarkerValue` 的 `const Lane&` 形参从未使用(函数体里只有一句 `(void)lane;`)⇒ 删除形参与该语句,更新 2 个调用点。 * `EdgePanelLayoutFor` 里「选区截取是否就绪(双光标)」算了 3 遍 ⇒ 收敛为函数顶部 一次 `clipReady`。它同时决定面板高度 footer、条目行可见性、按钮几何, 三处各算一遍时只要有一处条件写错,就是"底部多一段空白"或"没双光标却能滚动"。 二、新增护栏(离屏检查) * `panels`:新增「平行数组长度一致」不变式 —— `EdgePanelLayout` 的 13 个按行平行 vector 必须与行数一致;4 个「重采样」专属数组允许为空、非空则必须对齐。 这是"某列读到别人矩形"这类错位缺陷的唯一低成本护栏(O(1))。 * `panelscroll`:同样加一份(大文件、566 行时才会暴露的问题)。 * `panels` 输出增加 rows 数,便于定位。 三、文档 * `Documents/Code_Review_Plan.md` 新增 §七(第 35 轮节点与硬约束)。 * `Documents/Code_Review_Progress.md` 新增第 35 轮(面板架构评估 + 三次重构记录)。 * `Documents/Code_Review_Report.md` 新增 §12(评估结论 + gdtoa 最终结论 + 护栏价值)。 * `Documents/agent_mem.md` 新增第 35 轮六条规则。 * `Tools/README.md`:补 `panelscroll`、`integer_replacement_matches_std`, 断言数更新为 260 / 108,最小集表补充面板相关条目。 验证: * `make release`(删 .o 全量)零 error / 零 warning,产物 **786,944 B**。 * `make -C Tools` 零 error / 零 warning。 * `UnitTests` → checks=260 failed=0 cases=19。 * `OffscreenChecks -all` → 6/6 检查 PASS,checks=108 failed=0。 * `panels -mode compare` → 7 个面板像素哈希与几何逐项不变。
This commit is contained in:
1 parent
34365b3c1c
commit
b58b427f62
8 files changed
+408
-15
No files matched your search
@@ -203,3 +203,36 @@
|
||||
3. **"先量后改"**:任何以性能 / 体积为名的改动,必须在同一台机器、同一次会话内给出前后数字;
|
||||
收益低于噪声、或换来体积上涨的,一律回退,并把数字写进 `Code_Review_Report.md`。
|
||||
4. **像素基线只做本地 A/B**:哈希与 DPI/字体/数据文件绑定,**不入库、不当黄金图**。
|
||||
|
||||
---
|
||||
|
||||
## 七、第 35 轮追加(2026-11-04):浮动面板架构评估与收敛 + 整数格式化替换
|
||||
|
||||
> 触发:用户指出「7 个实验性功能面板观感/骨架高度一致,但每新增一种或改一次布局
|
||||
> 总会出意料之外的错误」,要求先**评估**(能否抽公共基类 / 公共组件,浮动面板、
|
||||
> 二级菜单、右键菜单是否算公共组件),再动手;同时把 §11.5 的
|
||||
> 「替换 `std::to_wstring` / `std::to_string`」做掉。
|
||||
|
||||
### 7.1 节点与验收标准
|
||||
|
||||
| 节点 | 内容 | 验收标准 |
|
||||
| --- | --- | --- |
|
||||
| **P20** | 面板「特征层」:唯一分类 / 标题 / 滚动几何来源 | 面板像素基线与几何**逐项不变** |
|
||||
| **P21** | 滚动设置收敛为唯一实现(7 个包装 + 2 条调用链) | `panelscroll` 新检查全绿 |
|
||||
| **P22** | 全仓替换整数格式化(76 + 2 处) | 面板像素不变 + 单元测试逐字符对照 |
|
||||
| **P23** | 其余审查清理(垃圾形参 / 重复判定) | 零 warning、像素不变 |
|
||||
|
||||
### 7.2 本轮新增硬约束
|
||||
|
||||
1. **新增一种实验性功能面板,只允许改三个地方**:
|
||||
`LanePanelScrollOf` / `PanelStyleOf` / `PanelTitle`(都在 `PlotViewInternal.hpp` /
|
||||
`PlotViewPanels.cpp`)。三者都是穷举 `switch` 且**不写 `default:`**,
|
||||
漏登记会被 `-Wswitch` 编译报警。
|
||||
**禁止**再在宽度 / 布局 / 绘制里各写一份 `kind == XXX` 组合判断。
|
||||
2. **底部"有按钮行"与"是构建按钮"是两个概念**(`PanelStyle::footerButtons()`
|
||||
vs `buildButton`)。混用会让面板高度与内容区高度不一致。
|
||||
3. **整数转文本一律用 `Utf8Util::FormatInteger*`**,不要用 `std::to_wstring` /
|
||||
`std::to_string`(它们把 MinGW printf 引擎拉进产物,且 libstdc++ 会强制
|
||||
`__USE_MINGW_ANSI_STDIO=1`,命令行关不掉 —— 见 Makefile 注释)。
|
||||
4. **改面板几何/绘制前后必须跑** `OffscreenChecks -run panels -mode record/compare`;
|
||||
本轮它当场抓到了"截取面板少了 37px 高度"的回归。
|
||||
Reference in new issue
Block a user