开发中我们会遇到各种可枚举的类型。比如我们在设计开发中有个属性——状态,他可取的值有草稿,已提交,已审核,已废止等状态。我们为这些状态指定了相应的代码如 1:草稿,2:已提交,3:已审核,4:已废止 ,而在数据库中存储的则是 1234这些代码。然后在jsp页面去翻译这些代码。可是为什么不直接存储内容呢?这样就可以免去翻译的代码。
我觉得因该直接存储内容理由如下:
1、可能有些人觉得存储 1234这些代码,可以提高数据库的效率,这个我没有深入研究。但觉得这种内容仅比这些代码多1-5个字符。性能应该影响不大。所以这不是使用代码存储的主要理由。
2、省去翻译的代码量。
3、程序可读性差,如果你要在service层改变某条数据的状态就会看到 setState(2)这样的代码,如果让别人看,2是什么啊!
(当然可以使用静态变量,但这种可枚举类型如此之多,如果使用静态变量也会增加代码量)
你们存储什么呢?给个理由!

解决方案 »

  1.   

    单一的一个字段,小数据量的程序,是看不出来效率的高低的,如果你的程序中有几十张表的时候,每张表状态的字段都是字符型且数据量非常大的话那就会大大影响程序的效率的,所以推荐使用数字存储.一般情况下使用tinyint就够了,这样比int更能提高效率.
      

  2.   

    当然是采用存储状态了,与存储状态对应的还有一个字典表,里面包含存储状态、代码类型、中文内容和英文内容(若有需要),系统初始化的时候将字典表的数据以hashmap的形式存放到内存中,key就是存储状态+代码类型,value就是内容的,在视图层就可以根据查出来的存储状态从hashmap中得到内容了
      

  3.   

    这个不是代码量的问题了。
    存代码,维护起来比较正统。
    参看4L和10L吧,说的很清楚了。1:草稿,2:已提交,3:已审核,4:已废止
    如果要求改为
    1:草稿,2:已完成,3:已批阅,4:已删除怎么办?直接到数据库中执行SQL?
    做成字典项,在系统中做出页面来维护,是不是更好一点?
      

  4.   

    存代码。0 1 2 3 4 5 理由:
    1. 代码不怕变化
    2. 中文,日文和英文
    3. “程序可读性差,如果你要在service层改变某条数据的状态就会看到 setState(2)这样的代码,如果让别人看,2是什么啊!”
    程序是让人用的,让人看的必是懂行的,只要你把comment和documentation写好,不怕让人看不懂。