一直有一个习惯,喜欢总结每一个项目的得失。离开HTC项目已经三月有余了,开始怀恋那些痛苦与快乐的日子了。整整一年的时间在HTC项目上,往往回想起来,是多么的充足。
怀恋是往往美好的。总结还是必须要的。该总结了。从收获开始吧。
收获的太多,但是最让我最大的收获是HTC项目它成功的上线,是我们最大的收获,通过大家一年的时间努力的结果。这个我想是每一个参加这个项目的人得到这个消息最开心的时候,虽然我在那个时候已经下项目了,但是我知道这个消息的时候,还是偷偷摸摸的心里开心的。就像以前我参加或者设计过的项目一样,每一个项目我都把它当作自己的孩子,用心去对待它,用心去完善它,看着它成长。煽情的话往往很多,还是像一个技术假宅男一样总结一下吧。
技术宅的人对于项目的总结通常离不开关于技术的讨论。
开始吧。
用了全中国人民最习惯的框架,spring+mybatis+webservice。对于这样的组合我真的没有什么好说的,问我为什么用这个,我真没法给出一个答案,如果非要理由我想是我们的团队对于spring的认知已经达到共识,好用并且在很多的项目里面用到这些,有着太多的代码可以重用了。mybatis的使用可能是一种错误的选择,在这里我必须承认mybatis是一个好的东西,但是我们往往忘记了,他对每一个写SQL的人技术要求,当我们花一点时间在review他们代码或者SQL的时候,我想我们后面不会花那么长的时间去改SQL。修改那么多的性能问题了。
当我们将web和业务分开的时候,我们认为我们的性能回大大提高,真的是这样吗?其实这种模式已经有很多成功的案例,但是我们没有好好的把握住,那我们缺少什么呢?应该是设计,每天我们做国内项目的时候,我们往往关心的是上线,业务没有错误,UI能展现,因为我的客户关心这些。其实我很想知道像BAT这些公司怎么处理这些问题的,也许会有人说他们是做产品的,难道我们做的项目不是产品吗?设计也许才是我们真正缺少的。现实情况会给我们这样的时间吗?我想是有的,当我们把后期的打补丁的时间算上,难道不够吗?
那么什么是设计,我从前看过一篇文章,里面有过这么一段话,我现在还记得,为什么我们把什么东西都给配活了,什么都可以配置修改,真正的软件是把不需要配置活的东西配置活了,那是因为我们对业务理解不清。想想其实是对的,除了工作流这种东西可以配活以为,我们或者请求的URL的这些基础数据配活以外,还需要吗,想象我们新的订单类型,难道我们需要改代码吗?笑话,肯定要的。那我们为什么将它配活呢。那么我们设计的时候订单的时候,为什么不用工厂模式去设计,根据不同的类型生成不同的订单类型,然后用适配器模式去处理各种的业务处理。那么我们的代码呢,不同的类型,我们选择不同的接口业务吧。来吧,我们不怕代码重复,我们要的是功能实现。以上描述不针对任何人。只是打一个比方。这样的例子HTC项目里太多了,收货,发货,受理等。
请不要相信我们会在后面花时间去重构代码这样的假话,因为在后面你不会花时间去重构代码的,理由很简单,因为那块代码对于现在的需求是正确的。你重构代码能保证正确吗,有那么多的人帮你测试吗?但是当你发现需求变化的时候,你会彻底疯掉以前写的代码的,你不知道会骂多少遍他妈的这是谁写的代码,狗日的也会骂的不少,那么我们之前为什么不review呢?没时间,就这么简单的理由。业务我们是理解了,但是我们的技术呢,还在那边,没有变,
完了完了,说了这么多HTC的是非,领导会不开心的,说说优点吧。其实优点太多没法说,我们用了web和业务分离,好吧其实这个也是我们用的比较奇葩的一个,UI自己设计的,这个比较爽,用了jQuery UI自己搭建了自己的UI.这个要归属我们的大神,马波同学,太牛了。还有各种自定义的东西。还有什么,啊,想不出来了,好吧其实最大优点是大家都是为了这个项目可以完美的上线,付出了很多陪伴家人的时间。其实说真的这个项目的优点太多,没法说要,得失往往这样,就像我们家姑凉说我,在一件事还没开始的时候,我往往把最坏的给想好了,就像我总结一样,我往往说最坏的,因为那些是值得我们去总结的。