曾经面试的时候,主考官问我,你做的最大的项目有多少张表?言下之意,想通过表的多少来了解项目的复杂度,但我宁愿相信他是想从侧面来了解一个项目,而非把它当成一项指标。同时,我也不建议面试官问这样的问题,因为应聘者可能会觉得不好回答,从而使他觉得比较紧张。
我不知道什么时候起,我们喜欢用数量来衡量一切,或者我们本身是一个这样的文化,崇尚大,可能是因为中国太大了吧,人太多了,所以人海战术在中国很盛行。
用过wordpress的人都知道,wordpress不过寥寥数张表,如果我没记错的话,应该在5张表这样子吧,可是,这并不影响它成为一个经典之作。
我见过一个系统,表的数量非常之多,我去数了一下,实在没数清,但我可以肯定,它的表超过300个。我以前接手的几个大公司的系统,像诺华的iETMS和杨森的ETMS系统,表也非常多,我甚至从来没有完完全全地了解过它们的表结构。不是我不愿意去了解,是表实在太多太多了。
表为什么会这么多,真是是业务需要吗?我看未必吧,我想像不出一个有三百张表的系统,会有多么的混乱,如果要升级,那更是一个梦魇。如果有人离职,如果增加新业务,我真不敢相像……幸好,我们会采用人海战术,我们会加班,我们有许许多多智慧的程序员,他们很有耐性去解决当前的一个一个小问题。但,后续的成本将成几何级增长。还好,我们很多的企业家只看重首次投入,并不太关注后续的隐性成本,只要今天可以快速低成本地开发完成就好了,至于明天的维护成本,再看吧。
为什么会有这么多的表?举个例子吧,性别可以建一个字典表,生肖可以建一个字典表,星座也可以建一个字典表……星座会改变吗?性别会改变吗?血型会改变吗?不会,它们是死的,几乎是一百年不变的,为什么我们要把他放到数据库里?我们为什么不能使用枚举?
OK,除了这些,还有很多的数据字典,他们都很类似,只有一个编号一个名字,二个字段,我们需要建立很多表吗?为什么我们不能加上一个类型,然后建立一个表呢,这样的程序不是很好维护么。再比如说:有一个地区信息库,我们需要洲的库、国家地区库、省级库、城市库等等这么多库么?不需要,我们只需要一个无限级分类的库就好了。
如果你说,我解决了上面的所有问题,可是表还是那么多,怎么办?那你就应该考虑分拆程序了,不要把一个程序做得比阿波罗还复杂,我们要把程序分成若干个小程序,然后让彼此通过接口来实现。就好比一台汽车一样,发动机和轮胎是分开的。
wow, so can i do?精简,再精简……
注意:本文为我的独立博客镜像博客,自发表不再更新,原文可能随时被更新,敬请访问原文。同时,请大家不要在此评论,如果有什么看法,请点击这里:http://iove.net/1705/
本文来自http://iove.net,欢迎转载,转载敬请保留相关链接,否则视为侵权,原文链接:http://iove.net/1705/
浙公网安备 33010602011771号