开发日记 — 2026年3月16日(周日) 节拍前夜 · 第48天
03/1744 浏览开发日记

今天做了什么
模块化拆分第二波
延续昨天的代码大扫除,今天把另外四个超长文件拆了(#036):
DrawingMachine(1726→1102行,-624行):把四大纯数据表(PARAM_META、PARAM_GROUPS、PRESETS、TEXTURE_CATALOG)整体提取到 DrawingMachineData.lua。这四张表有交叉引用,拆开反而麻烦,干脆打包搬走。
EventScreen(1255→702行,-553行):事件定义表 ALL_EVENTS 连同几个辅助函数提出去,子模块通过 init(deps) 接收依赖。
TitleScreen(1491→1304行,-187行):提取了规则弹窗和设置弹窗两个工厂函数。内联弹窗因为深度耦合回调流就没动。
MapScreen(1426→1273行,-153行):把 ClickExpansionWidget 点击扩散动画完全独立出来,连形状生成函数一起走。
和昨天的\"注入+代理\"模式不同,今天用的是\"纯提取\"模式——数据表、工厂函数、独立控件,没有状态耦合就不需要注入。两种模式互补,算是把模块化拆分的方法论都跑通了。
TitleScreen 按钮布局修复
晚上发现手机端 TitleScreen 按钮布局异常——buttonAreaWrap 缺少 width 导致 Yoga 布局引擎产生循环依赖。加了明确的宽度约束修复。
今天卡过的地方
TitleScreen 的 Yoga 循环依赖花了点排查时间。Yoga 的 flexbox 在父容器没有明确宽度时,子元素的百分比宽度会触发循环计算,表现为布局塌缩。这种 bug 在桌面端不复现(窗口有固定宽度),只在手机端出问题。
数据
项目总代码量:约 46,830 行(104 个 Lua 文件)
迭代编号:#036
模块化两日总计:净减约 2,119 行(9个子模块提取)
新增文件:DrawingMachineData.lua, EventScreenEvents.lua, TitleScreenModals.lua, ClickExpansionWidget.lua
碎碎念
两天的模块化拆分告一段落。从数字上看,9个文件从主模块中独立出来,代码总量减了两千多行。更重要的是心理上的:打开一个文件不再是 1700 行的压迫感了。
BattleScreenV2 那 2312 行依然是最后的堡垒。29个函数共享闭包状态,拆文件级模块等于要重写状态管理。先放着吧,等哪天有大块时间再说。
开发工具:TapTap Maker + Claude Code
项目起始日:2026-01-28



