refactor(panels): 删除 rowPoints/rowIterations 死列 + 提取 PaintPanelResampleRows
对应 Code_Review_Report §14.5 第 1 项与第 3 项。
第 1 项:删除 EdgePanelLayout::rowPoints / rowIterations(行数组 18 → 16)
- 写入方只有 AppendRow(推空矩形),读取方只有调试框 AddAll 与 PanelSlotKey 的 mix 循环,
绘制方零(旧式“点数 / 迭代次数”输入框早被滑块版 rowLevelTracks / rowIterTracks 取代)。
- 连带同步:AppendRow、调试框、缓存键、rowgeom 导出、panels/panelscroll 长度不变式、
文档里的列数(18/14 → 16/12)。
等价性由基线证伪,而不是靠人工 grep:
old lines = 983, new lines = 919
only in OLD = 64, only in NEW = 0
only-in-OLD lines NOT belonging to rowPoints/rowIterations = 0
即除被删两列外,其余 919 条键逐字节相同。
第 3 项(前半):提取 PlotView::PaintPanelResampleRows
- PaintPanelListRows 里 `if (resamplePanel) { …; continue; }` 共 132 行整块提取,
签名 (g, layout, rowIndex, laneIndex, ref, item);两个局部 lambda
(paintInfoRow 只读统计行 / paintInputRow 联动输入框)随之迁移。
- maxInterval / minInterval 两个纯拷贝局部量直接用 item.maxInterval / item.minInterval。
- 通用参数行(中心轴统计 + 两行滑块)未提取:需 9 个参数,签名比函数体更难读。
§14.5 第 2 项(完整结构合并)本轮不做,方案已定并写入文档:
- 列视图(PanelColumn<T>)方案否决:拷贝忘重绑 = 静默悬垂,需额外自检兜住;
- 若要做就做“vector<PanelRow> + 具名成员访问(无视图)”,242 处读点(127 处命中判定),
必须单独一轮。它属整洁性收益(漏推一列已被 AppendRow + 长度不变式挡住),不是紧急项。
验证
- make release:零 warning;785,408 → 784,896 B(−512);make debug 同样零 warning
- make -C Tools:零 warning
- UnitTests:checks=260 failed=0 cases=19
- OffscreenChecks -all:7 检查 / 127 断言全 PASS
- panels -mode compare:7 面板像素哈希 + 几何逐项不变(resample=2BFC74B3D9B3239C)
- rowgeom -mode compare:919 + 7 键,0 差异(基线已按 16 列重录)
- PlotViewPaint.cpp 5575 → 5565;PlotViewPanelPaint.cpp 1016 → 1020
文档:Plan §十、Progress 第 38 轮、Report §15、agent_mem 第 38 轮、Tools/README §4.4
This commit is contained in:
1 parent
353c553721
commit
f07ac74988
9 files changed
+384
-150
No files matched your search
@@ -491,3 +491,62 @@ SUMMARY checks=32 failed=1 groups=1 result=FAIL
|
||||
| `rowgeom -mode compare -data MF4-Record.MF4` | `detail 1304 键 + scale 7 键`(566 行),0 差异 |
|
||||
| `panels -mode compare` | 7 个面板像素哈希 + 几何逐项不变 |
|
||||
|
||||
---
|
||||
|
||||
## 第 38 轮(2026-11-04):删死列 + 拆重采样参数行(§14.5 第 1 / 第 3 项)
|
||||
|
||||
### P31 删除 `rowPoints` / `rowIterations` —— ✅ 完成
|
||||
|
||||
审计(§14.5 第 1 项的前提)在三处确认它们是**死列**:
|
||||
|
||||
| 位置 | 原用途 | 现状 |
|
||||
| --- | --- | --- |
|
||||
| 写入 | `AppendRow` 里推两个空矩形 | 这是**唯一**写入点,从未被赋过非空矩形 |
|
||||
| 读取 | `PlotViewPaint.cpp` 调试框 `AddAll`、`PanelSlotKey` 的 mix 循环 | 都是"遍历即忘",不产生任何可见效果 |
|
||||
| 绘制 | 无 | 旧式"点数 / 迭代次数"输入框早被滑块版(`rowLevelTracks` / `rowIterTracks`)取代 |
|
||||
|
||||
改动:删两个 `std::vector<gd::RectF>`(`EdgePanelLayout` 少 48 字节)、`AppendRow` 少两次 `push_back`、
|
||||
调试框与缓存键各少两个循环、`rowgeom` 导出与两处长度不变式各少两项(16 列)。
|
||||
|
||||
**等价性被基线证明**(这是本轮最值得记的一条方法论):
|
||||
|
||||
```text
|
||||
old lines = 983, new lines = 919
|
||||
only in OLD = 64, only in NEW = 0
|
||||
only-in-OLD lines NOT belonging to rowPoints/rowIterations = 0
|
||||
```
|
||||
|
||||
* 983 − 919 = 64,正好是两列在 7 个面板上的键数(`count` 键 + 每行键);
|
||||
* 其余 919 条键**逐字节相同** ⇒ "这两列从未有非空值"的判断不是靠眼睛,而是靠基线证伪。
|
||||
* 随后用新代码重新 `record` 正式基线(`rowgeom-baseline.txt`),再次 `compare` 归零。
|
||||
|
||||
### P32 提取 `PaintPanelResampleRows` —— ✅ 完成
|
||||
|
||||
`PaintPanelListRows` 里 `if (resamplePanel) { …四行… continue; }` 这 **132 行**整块提取为
|
||||
`PlotView::PaintPanelResampleRows(g, layout, rowIndex, laneIndex, ref, item)`:
|
||||
|
||||
* 两个局部 lambda(`paintInfoRow` 只读统计行 / `paintInputRow` 联动输入框)随之迁移;
|
||||
* `maxInterval` / `minInterval` 两个"拷贝一份再说"的局部量直接用 `item.maxInterval` /
|
||||
`item.minInterval`(原来是纯拷贝,无语义差别);
|
||||
* 调用点只剩 3 行(含注释),`PaintPanelListRows` 现在只有"条目栏 + 通用参数行"两段。
|
||||
|
||||
### §14.5 第 3 项的完成度(诚实记录)
|
||||
|
||||
| 段落 | 状态 | 理由 |
|
||||
| --- | --- | --- |
|
||||
| 重采样行 | ✅ 已提取 | 排版与其它面板完全不同、入口/出口干净(`continue` 收尾) |
|
||||
| 通用参数行(中心轴统计 + 两行滑块) | ⏸ 未提取 | 依赖 3 个 kind 标志 + 2 套状态(`m_dragMode`/`m_editTarget`)+ 2 个滑块 lambda,签名要约 9 个参数,可读性收益低于参数表成本 |
|
||||
| 条目栏 | 保留 | 三角 + 名称 + 复选框 + 悬停是三种排版的公共前缀 |
|
||||
|
||||
### 本轮验证
|
||||
|
||||
| 项 | 结果 |
|
||||
| --- | --- |
|
||||
| `make release`(全量) | 零 error / 零 warning;产物 785,408 → **784,896 B**(−512) |
|
||||
| `make -C Tools` | 零 error / 零 warning |
|
||||
| `UnitTests` | `checks=260 failed=0 cases=19` |
|
||||
| `OffscreenChecks -all` | 7/7 PASS,`checks=127 failed=0` |
|
||||
| `panels -mode compare` | 7 个面板像素哈希 + 几何**逐项不变**(含 `resample=2BFC74B3D9B3239C`) |
|
||||
| `rowgeom -mode compare` | 919 + 7 键,0 差异 |
|
||||
| 行数 | `PlotViewPaint.cpp` 5575 → 5565;`PlotViewPanelPaint.cpp` 1016 → 1020(净增 4 行:函数头 + 文档) |
|
||||
|
||||
Reference in new issue
Block a user