机房合作版到了尾声,看着我们每天的记录,有太多的成长。不知道是不是大家的通病,在一件事情开始之前,总把它设想成多么艰难,自己绊着自己的脚,渐渐相信了原来恐惧本身才是最恐惧的事情,之前看他们合作使用的工具,高大上,给人一种不容易接近的感觉,
机房合作版到了尾声,看着我们每天的记录,有太多的成长。不知道是不是大家的通病,在一件事情开始之前,总把它设想成多么艰难,自己绊着自己的脚,渐渐相信了原来恐惧本身才是最恐惧的事情,之前看他们合作使用的工具,高大上,给人一种不容易接近的感觉,一旦自己经历才有资格说和别人感同身受。这次合作感触很多,不管对我的学习和交流都是一种提高。
这是我们合作的第一个项目,作为组长不知道是我的幸运还是不幸,开始真的压力山大,虽然个人重构也是结束没多久,现在可是三人合作共同去完成,还是无从下手,不知道第一步要干什么,SVN视频看完了也还很模糊,开始总是很沉重的,但日子还是要继续,就去找师父,知道谁合作完了就和他们交流每个阶段都注意些什么。于是制定了第一个计划(11月4号-12月4号),计划每天晚上着手合作的事情,发现四五天过去了,没什么进展,7号晚上第一次开会只是将计划说了一下,分了一下工,我负责画用例、类图和时序图,金博负责设计数据库,然后代码就负责D层,春阳负责原型图,加上U层代码,最后B层就分配到了我,可是发现画图时一些类的方法的参数不知道如何定义,这时才感觉需求分析真的很重要,也很必要,我们拿出一晚上时间把每个功能用到的方法、方法传递的参数和返回的类型还有数据库中用到的每张表,每张表的字段和类型讨论了一下,然后我在画类图的时候不再用纠结,后来一次和文康师哥聊天,指导了我们每个阶段注意的问题,稍改变了一下计划,合作的事情不能这么拖着,团结起来一口气完成,挺有道理的,于是修改了计划,接着之前,制定了10天的计划(画图3天,代码实现3天,调试3天,补充文档1天),安排每个人每天任务,我主要还是画图,金博负责数据库设计,春阳负责研究设计模式的使用。
画类图大概用了1天半,不过完善类图差不多用了2天,这里最大的感悟就是为人民服务绝不是口号,合作框架还是三层思想,但这次每层的类都是EA自动生成,看着生成后的类,知道有了表头、类、方法、参数等着这些注释才舒服些,真的是画图时如果细腻些,组员就会减少一些工作量,这也是应该的,画时序图大概用了1天多,类图定义好的话,时序图相对容易很多,不过对于一些逻辑判断自己也拿不准,这次我很幸运当了组长,又很幸运负责B层代码,个人重构验收时师哥说我三层理解有问题,不会抽象,我当时真的不理解,也不知道自己问题出在哪里,通过这次画图,我明白了B层调用工厂创建接口,还要调用接口的方法,其实就是调用D层方法,而之前我直接返回接口就完事了,然后在U层调用接口的方法,直接和数据库打交道,没有达到解耦的目的,终于对逻辑判断有了一点点理解,记得个人重构总结时说一些遗留问题等到合作时来弥补,有些东西是到了一定阶段才慢慢理解。这个阶段金博主要建立数据库和使用的一些存储过程、视图的编写,春阳主要查资料我们使用的策略、职责链、模板、抽象工厂、外观等模式如何使用,如何体现在类图上,当然原则上每天开会,不过有时有问题也随时交流去解决。
有了EA生成的类图,建立好项目,这些类要包含在项目中,系统框架就成型了,他们看着图和文档,写代码简直是太容易的事情了,写代码大概用了2天时间,中间也遇到很多事情,SVN使用不熟练,有时一个人在修改文件,另一个更新提交就会出现冲突,只能退回到之前版本,在工具的使用上,也请教了不少同学,在这里除了了解SVN的更新和提交代码功能,还代码随时备份的思想。我负责的B层代码,最纠结的应该算是设计模式的添加了,个人重构时下机没有使用策略,这次我们决定一定要加上,再加上职责链的使用,每个类中的方法不知如何下手,跟春阳也讨论了不止一两次,也搜了很多他们博客,等实现以后走一遍代码发现其实也就那么一回事,很难说一个人的潜力有多大。
调试代码在我看来是最有意思的阶段了,如果不是自己亲眼看到绝对不会相信是自己写出来的,最容易出现问题的几乎是D层SQL语句拼错,参数没有赋值,也有命令类型错误等,还有就是U层有时没有赋值,也有一些思路的差别,比如充值之前要返回一个卡的金额,充值之后也要返回一个金额显示,开始是写到B层充值方法里面,后来发现返回的类型U层满足不了,不得已将卡的判断返回到U层,然后再充值。调试阶段也是很好的交流机会,你可以看到他们思考问题的方式,春阳比较善于思考,思路很灵活,而我就是很依赖网络,比如下机计算消费时间,出错了就去网上找方法,而不是自己先去思考,这也是一种习惯吧,之前总是说靠自己,原来靠自己是先靠自己大脑,然后再借助巨人肩膀,这样应该会更加深刻;金博很有耐心,很会为知识结网,而且他学习一个东西比较踏实。毕竟是三个人写的代码,调试中各种问题,调试也是时间最长的。总之,相信自己,更要相信代码。
这次合作,让我看到之前自己漏掉的东西,比如画图的规范,比如策略模式,比如如何在B层逻辑判断,而且现在是三个人一起完成,我所做的就不能只考虑一个人,你在一个团队中,领导一个团队,交流沟通很重要,自主去付出更重要。只要去做总会进步的。