博客 · 第 3 页
关于工程、设计与一些随手记录。
防抖与节流:差别只在「谁决定何时执行」
两者都是限流,区别是防抖由最后一次调用决定执行时刻,节流由固定时间窗决定。选错的典型症状是拖拽跟手但松手才更新,或者输入框该等却每 200ms 就发一次。
工期估算:为什么「大概三天」永远变成三周
估的是「写代码」的时间,交出去的是「写代码 + 联调 + 评审 + 改需求 + 等别人」的时间。把不确定的部分显式列出来,比把天数乘二更有效。
功能开关:它是负债,不是配置
每个开关都会让代码路径翻倍,而开关本身永远不会被删。给每个开关定一个移除日期,比设计一套精巧的开关系统重要得多。
游戏主循环:为什么必须用 delta time
每帧固定移动 5 像素,在 60Hz 屏幕上快一倍、在 144Hz 上快两倍半。把时间差乘进去,物理才与刷新率解耦;再加一个上限,切标签页回来才不会瞬移。
git bisect:把「哪次提交弄坏的」变成一条命令
回归排查的瓶颈不是二分本身,而是没人说得出「什么样的提交算坏」。先写出能自动判定的脚本,bisect 才能把 n 次构建压到 log n 次。
五子棋 AI:算杀层与搜索层怎么分工
纯 alpha-beta 在五子棋上会漏掉必杀。我把决策拆成三层——成五、堵五、算杀各司其职,剩下的才交给迭代加深加置换表,快棋也能下出像样的棋。
