【机房重构】一步一步往上爬——验收给了我什么

 整个机房重构过程中,一共经历了两次验收。一次是关于系统编程;一次是关于画图与文档,每一次,师父都是耐心、细心地指导。要问验收给了我什么,看下面的博客内容便清楚了。
 个人机房重构可分为两个阶段,前期主要是代码的编写,后期主要是画图。
 在前期阶段,慕夏师父也是非常关心我的进展,时常来我这里看看,问问我有什么问题,抓住这几次机会,师父也是和我说了很多,从而对整个机房收费系统的业务逻辑更加清楚了。刚开始接触到抽象工厂+配置文件+反射的时候,除了茫然还是茫然,几天下来没有什么成果,登录的主线也没有完全明白,后来也是经过师父的一番点播后,才突然有种恍然大悟的感觉。
 在第一次验收的时候,师父对我做的系统并没有测试什么功能。因为师父说她不看都知道我的整个系统是个什么模样。比如代码中返回的不是Datatable型就是Boolean型,所以师父建议我用用泛型,一个很好的工具,在合作中用上。
 第一次验收的重点主要是在数据库的设计上,师父让我打开数据库中的任意一张表的设计给她看,如下图,

【机房重构】一步一步往上爬——验收给了我什么_第1张图片

 这是系统中对卡表的设计,在这时候,才发现,自己对于数据库的设计有多么的粗糙。
 1.从全局上来看,表中没有设置主键,这就需要在系统中编写一段“判断卡号是否存在”的功能的代码,这也就增加了整个系统的负担。因为这个系统小,可能看不出来有什么问题,但假设这个系统就是整个廊坊师范学院的机房收费系统,那么一张表中至少有上万条数据,如果将整个表都遍历一遍,就做了大量的无用功,这样一次又一次,说不定系统哪天就崩了。而要是在数据库设计时设计了主键,这些工作就交给了数据库去做,系统中就不需要做了,卡号也是不可能会有重复的。
 2.全局看完后,就是各个部分。
 首先是命名。这点做的还行,都是根据业务逻辑名称用的相对应的英文。
 其次是字段。看看一个表中的字段是否是真的需要记录它的。师父就指出了RegisterTime这个字段,她当时就问我这个字段有用吗?在系统中哪里有用到它么?这么一想,系统中确实都没有用到需要查询时间的条件,这不仅仅一个日期字段就足够了嘛。这也是自己思考的少的原因,因为第一次机房收费系统中给了我们一个数据库模板,其中每个字段也没有想过是否真正需要。减少这一字段,相应地也就减少了很多内存空间,避免了浪费大量存储空间的问题。
 最后是数据类型。师父看到我这数据库的设计类型都惊讶了,都好奇我的第一次机房收费系统都收获了些什么。这一点,应该是在第一次机房的时候,师父就强调的。而事实是,我的第一次机房,师父都没有打开过我的数据库看看,所以第二次也没有特别在意这一问题,简简单单就随便给了个数据类型就OK了。实际上,这是一点也不OK的。整个表中的数据类型,除了Char,就是VarChar,而且,所有的空间大小不是10就是20。
 那么下面就一个个字段来分析一下,看看究竟应该用何种类型才更合适些。
 卡号,字符串型,长度可能在11-16位左右;
 学号,字符串型,长度为11位;
 注册日期,本来用的是标准的日期型格式,可是在系统中报错,所以也就改成了字符串型的。师父说这是一个解决办法,但用日期型也是可以的,在合作中可以想想办法;
 余额,学生卡内余额最多会是多少,撑死了也就几百吧,往多点估计,也就上千,也就是4位数,再保留两位小数,总共也就6位数,用一个numeric()函数解决;
 操作员用户号,字符串型,长度在11-16位左右;
 是否结账,Bit型,用0表示已结账,用1表示未结账就行;
 类型,字符串型,“固定用户”或是“临时用户”,也就占8个字节。
 所以,这么周全的考虑一番,整个卡表的设计真的像是有了新的生命力一般,如下图:

【机房重构】一步一步往上爬——验收给了我什么_第2张图片

 另外,除了对数据库的设计做指导外,对后面的画图阶段也是给了给予了很多指引。先是带着我回顾了之前的UML学习,其中用例图、类图、时序图、部署图便是本次机房重构画图中的重点。
 但是,这么长时间过去了,期间也没有对UML的学习复习过,所以很多东西都已经遗忘了。可能是之前的总结做的还不到位,以至于师父又给我上了一堂课。特别是类图的那些关系,在学习的时候,自己还有写过单独的博客《UML——理理关系》,那时好像是理清了,但在师父面前,当时那关系就只有剪不断理还乱的感觉。
 对于第一次验收,就感觉师父真是牛,感觉自己真的收获很多,也感觉自己还真是稚嫩,还有很多很多需要自己去学习。
 而对于第二次验收,主要是关于自己的图,什么地方做的不足,什么地方值得肯定,师父都有做详细指导。不管是哪一方面,都是为了我在后面的合作阶段,毕竟是第一次团队合作,我们都还没有经历过,所以第一次也是都做的细致一些才好。
 关于这一次验收中的点滴,可从博客《【机房重构】一步一步往上爬——又见UML与文档》中具体查看。
 两次与师父的近距离交流,不论是学习上,还是思想上,都有一些话反复听见。这些话,不能只是听过去就算了,更要去做:
 1.不谋全局者不足谋一域,不谋万事者不足谋一时;
 2.合作时,是个互相学习,互相利用的好时机,别人会给予自己很多,自己也会带给别人很多;
 3.一个人的力量是有限的,团队的力量是不可想象的;
 4.学习,不光是看自己有多快,或是有多大收获,而是要看自己帮助了别人多少,这才是别人眼中的牛人;
 5.合作时,如果是组长,那么就多一份担当;如果是组员,那么就多一份技术;总之,都要去积极主动地去交流,去协作。
 ......
 到此为止,个人机房收费系统合作版的“一步一步往上爬”系列也就告一段落了。
 在这期间,自己有过为了完成一个功能熬夜加班的经历,当时一点也不觉得困;自己有过为了调错整天其它的什么也没有学习的经历,当时一点也不觉得烦;自己有过一次又一次敲重复代码的经历,当时就是觉得恶心至极了;自己有过和大家一起讨论,互相解决问题的经历,当时就是觉得开心至极了......
 代码如人生,我的生活,因代码而更加精彩。经历了,便是最珍贵的回忆;经历了,便是最宝贵的财富。


你可能感兴趣的:(数据库设计,画图与文档,个人重构)