导航

一个设计细节

Posted on 2006-12-29 20:53  山姆蜀黍  阅读(1452)  评论(8编辑  收藏  举报
  我想,每个人都有选择自己生活的权利。可是,作为一个有理想的人,需要追求卓越,这恐怕没有人反对。你可以追求城市生活的精致,也可以向往田园生活的情趣,但你不可以懒惰。田园生活的闲淡也是需要用心维护的。因此,如果你想更好的生活,你就必须一步一步地向更理想的境界努力!
  最近做公司的一个系统的设计,感触颇多。今天就其中的一小点谈谈我的感受。其实,做设计的时候,恐怕大家都想将数据的约束更明确,从不同的层面来保障安全。用个例子来解释一下。比方说,我想维护一个业务的状态字段state,定义的时候可以有很多方法,如,定义一个char字段,然后在程序中人为的添加一些状态如:
  insert into Business(name,state) values('business1','begin')
  请注意,形如'begin'的这个状态在系统中并没有留有系列的参考,这个状态的添加完全依赖于设计文档或者程序员的记忆。从而造成了我们在维护状态时需要在view层的DropdownList中将几种状态手工添加上去。我想这样的约束总是不让人放心的。其实我们还可以这么做,就是通过定义一个状态的枚举
enum state{
 begin=1,next=2,....end=0
}
  将state字段定义为一个tinyint(当然是char也可以)。这样,我们在写程序时就可以利用这个state类型来定义这个business的状态,事实上我们还可以做到更多,如直接将business的state属性类型定义为state类型,然后实现对实体的state字段的映射(tiddy的nbear就支持这么操作,事实上,从nbear中我学到了很多,感谢tiddy)。而在view层我们可以直接使用这个enum来填充DropdownList的items,从而实现了各个层次统一的约束。(当然并不一定是enum,你也可以写成一个静态的参考,通过合适的方式映射到实体。)
  另外,在建数据模型的时候,我们也可以再多做一点--就是将约束直接定义到数据库字段中。这样统一约束,让人感觉放心。事实上,我认为这样的程序质量也更高。
  但实际在我们的开发经历中,好多时候经常注意不到这些,为什么呢?我们看看微软的一个方法:.net类库中,我们会看到好多类型都有Format方法(比如String,Enum,etc.),大家对这几个character应该不陌生:"C" or "c","D" or "d","E" or "e","F" or "f","G" or "g","N" or "n","X" or "x"。我就不明白了,为什么微软不将这个Format参数定义成一个更优雅点的类呢(如果是静态的也通过“.”就可以获得,像Color那样)?虽然,参数并不复杂,可是这难道不是学习成本么?搞不明白。
  我觉得这是工程大了,有些规则没有执行到位的结果!如果真是这样,我们在使用ms的类库的时候可要小心了。由此类问题造成bug的可能性不会太大,但很有可能积累成我们思想上的bug!
  很少写东西,一定很拙,但愿我说的您明白了~~~