博客 · 第 7 页
关于工程、设计与一些随手记录。
大 O 的误用:常数和前提比阶更常决定成败
O(n log n) 的排序可能慢过 O(n²) 的插入排序,O(1) 的哈希表可能慢过数组线性扫。判断性能前先确认输入规模、常数和内存局部性。
用 @layer 把样式优先级从「比权重」变成「排顺序」
样式失控的根源不是选择器写得不够具体,而是所有人都靠加权重解决问题。级联层让顺序显式化:层与层之间比顺序,层内部才比特异性。
防抖与节流:差别只在「谁决定何时执行」
两者都是限流,区别是防抖由最后一次调用决定执行时刻,节流由固定时间窗决定。选错的典型症状是拖拽跟手但松手才更新,或者输入框该等却每 200ms 就发一次。
工期估算:为什么「大概三天」永远变成三周
估的是「写代码」的时间,交出去的是「写代码 + 联调 + 评审 + 改需求 + 等别人」的时间。把不确定的部分显式列出来,比把天数乘二更有效。
功能开关:它是负债,不是配置
每个开关都会让代码路径翻倍,而开关本身永远不会被删。给每个开关定一个移除日期,比设计一套精巧的开关系统重要得多。
游戏主循环:为什么必须用 delta time
每帧固定移动 5 像素,在 60Hz 屏幕上快一倍、在 144Hz 上快两倍半。把时间差乘进去,物理才与刷新率解耦;再加一个上限,切标签页回来才不会瞬移。
