SuperAPI AI 工具集

delta-absent-not-infinite

编程与开发

查看项目

更新于 10-17 16:15

技能介绍

该内容来自 maxrave-dev/kotlin-footguns 中的 delta-absent-not-infinite 条目,主题是:没有基线的变化值是“缺失”,不是“无穷”。

用途:用于指导统计类界面(如对比上一周期的指标卡片)如何正确计算与展示变化百分比,避免在无有效基线时编造数字。

主要能力与做法:

  1. 提供示例函数 percentDelta(now: Long, before: Long?): Int?,当 before 为 null 或 before <= 0L 时返回 null。
  2. 在状态层用 previous.takeIf { p -> !p.isEmpty } 丢弃没有事件的上一期快照,使整屏数值都不带变化值。
  3. 在数值层用 before <= 0 处理“该期有事件但某指标为零”的情况;文中指出两层守卫都需要。

文中列出的陷阱:

  • 空基线下的 +100% 属于伪装成洞察的噪声,会让整列数字失去区分度。
  • 缺失应渲染为缺失:要么省略元素,要么显式打印“no previous period”;不应使用破折号、0 或 em dash 占位。
  • JVM 上 Int 运算会饱和而非回绕,极小基线会产生 Int.MAX_VALUE;需要在基线过小时抑制或改用“×N”格式。
  • toInt() 向零截断会使 −0.5% 变成 +0%,与真实 +0.5% 显示相同;应四舍五入或按原始比值判断符号。
  • 涨跌同色会让符号成为唯一区分,应通过颜色、箭头或足够字号编码方向。
  • 比较区间必须等长,例如用同一函数以 offset 与 offset + 1 派生两个窗口;否则会变成在度量日历本身。
  • 缺失基线时,图例、坐标轴、“vs previous period”说明也需一并移除。
  • 两个快照应作为一致的一对获取,避免本期计数与上期总数混排。

验证方式:文中给出在仓库根目录执行的只读命令,包括 grep 查找 percentDelta( 的所有调用点、用 awk 演示截断、grep 检查 delta >= 0 分支、rangeFor( 与 if (offset == 0) 的窗口生成分支。

适用场景:Kotlin 应用中涉及周期对比、环比、变化率展示的 UI 代码审查与实现。

限制:该资料仅为单项编码准则与示例,未提供完整库、安装方式、版本支持、性能数据或平台兼容性信息。