我最近遇到了以下示例:
SELECT A, B, C, D, CASE WHEN D IS NULL OR D='' THEN 'i-1' ELSE '' END AS E
FROM YourTable
密钥是枚举的地方。
有没有任何理由为什么写这篇文章的人都是这样做的,因为这似乎会使代码变得不必要地变脆;对枚举列表值的更改可能会破坏映射逻辑并导致返回类型不正确 我能看到的唯一可能的好处是轻微的性能提升,在具有高吞吐量的服务器环境中可以证明采用的方法是合理的。
是否有任何可能的性能提升,还有其他任何我不知道的好处吗?
答案 0 :(得分:2)
不,不应该使用它。最慈善的解释是有人盲目地用#define
s从C或C ++复制代码,但应该是惯用的。
此外,在问题中概述的情况下(理解真实代码可能更复杂),最好用简单的EnumMap
来解决,这比任何分支都要高效。
答案 1 :(得分:2)
有一个很好的理由反对它。这些序数可以随时改变而不会破坏二进制兼容性。这些名字根本无法改变。
更好的解决方案是将返回的值构建到Enum
本身。