Bug记录:
表现:
图形设置界面在特定的设备上黑屏
问题定位:
只有在默认设置为 Ultra High 的设备上会出现这个问题,最后发现是早期设置默认值的时候,直接用当前preset的等级设置了feature的默认等级。但是preset的等级现在有Ultra High了,而feature最高只有High,在读取对应show name的时候读不到值了。
问题出现原因:
- 早期设计阶段,preset和feature的等级使用了同一个枚举,当时都是高中低三个档位,但是后期preset出现更高的设置了。本来这两个东西的含义就不一样,不应该为了省事儿使用同一个,后期因为这个偷懒而改了好几次bug。而上次修改又只是通过Attribute把同一个枚举强行分成两个用,结果还是由于下一个自己的SB设计出事儿了。
- 默认值的设置:这是一个典型给自己埋雷的设计,我在给各项feature设置默认值的时候,用了当前的preset值。也就是如果当前是超高配置,那么对应各项的feature就是超高,但是事实上,feature的等级根本没有超高。早期这个思路看上去没问题,但是依旧是自己默认了随时可能变化的规则。
反思&设计原则:
- 关于默认值的设置:使用无意义的、一眼能暴露问题的默认值
- 关于偷懒:如果意义不一致,即使在现阶段可以共用,也不能使用。需求变化快如狗,不要自己瞎猜需求
- 关于早期遗留问题:可拓展的系统在后期拓展的时候最好检查一下早期设计,毕竟最开始可能有很多问题想不到或者单纯的遗忘了
网友评论