在生产中枚举vs Integer

时间:2016-06-03 11:15:03

标签: java mongodb performance enums code-readability

我正在使用java + mongodb。 而且我需要在一周中的某一天做商业逻辑和数据库逻辑。

考虑性能,可读代码,避免错误等

我应该创建一个枚举类型。

public enum DayOfWeek {
    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;
}

或使用int代替(2,3,4,5,6,7,8)

由于

2 个答案:

答案 0 :(得分:0)

使用enum会提高可读性,维护也会更容易。

我不确定java驱动程序如何转换enum值(但我认为这将是c#中的int),这意味着文档会更小并且搜索会更容易(比较{{ 1}}总是比比较int)快。

使用序列不是从1开始(自然)可能导致像5这样的问题?另一件事是,某些语言或技术将星期日定为strings 0 1 - 所以7 - 支持整数看起来是一个更好的解决方案。

修改

由于您有预定义的枚举值,因此可以忽略一些问题。在dayOfWeek字段上创建索引将解决问题,可以跳过数据大小开销(或者如果有数十亿条记录 - 那么应该考虑int值)

使用枚举,因为它使代码更易读,更易于维护/调试。

答案 1 :(得分:0)

确实,Enum值在mongo docs中保存为字符串。基本上为了便于阅读,我选择枚举而不是字符串。

如果同一个数据库被另一个(非Java)应用程序读取,则变得更加重要,在这种情况下,最好不要使用神秘的数字。