Archive for » 十二月, 2008 «

由于Manager当时给我的进度安排是在这周末完成ComboBox的工作(因为我是实习生,所以也不是特别紧)然后接下来有时间的话就看看怎么处理滚动条。然后在周中的时候我就把ComboBox我这里的部分都结束了,其中Troy提交了一些改动,因为我没有Perforce的权限,所以这些代码我只能手动的把它们Merge起来。在公司里我还知道了很多以前用不到的东西,比如说这个WinMerge是开源的用来对比两个文件是否不同的软件,很小巧方便~以前我一直在用UltraEdit的那个Comparison,不过是收费的。。。来了公司以后我发现正版意识强了不少,在寝室里能不用盗版的就不用盗版的~啊,要是所有人都有这种意识国外的媒体啊政府什么的就不会抓住我们知识产权这一块不放了。回到工作上来~有了ComboBox的经验后,滚动条就简单了许多,只要设计好要录制哪些信息,什么时候把消息发出来,怎么回放就OK了。我觉得现在我已经有一种意识就是写代码不是为了解决当前眼下遇到的问题,而是把以后可能遇到的情况也尽可能地考虑进去,让自己写的代码更加robust~不论是在异常处理还是容错上都会认真考虑~之后Troy大概看了一下我的代码,表扬我写的还是挺工整的,然后教了我一下C#写代码我没有注意到的Convention,比如说代码的初始化风格要统一,不要有的放在定义时有的放在构造函数里;又比如说如果要完成一个模板类,有一个函数必须要用户调用,那可以写成xxxx()和doXXXX()的模式,然后让用户去重写doXXXX(),而只能调用xxxx()这样就可以保证调用次序不被以后的程序员无意或者有意间的破坏了。Review代码真是一件好事,可以从别人那里学到很多东西,也可以看到别人想到而自己没有考虑到的问题或者想法~以后研究生阶段一定要把在公司学到的东西好好发扬光大~全面提高自己的编码能力~

Category: 日记  Leave a Comment

这一周继续在看OWL的代码,感觉,唔怎么说呢~还是有点难懂~不过里面包含了很多很多的模式,因为一大特点就是有非常多的类,大概有60个左右吧,这是运用了模式最大的特征;还有一个就是里面的继承关系并不复杂,主要还是利用组合来代替继承,这也是Design Pattern里面一直强调的~但是这可能造成读起来比较困难,除非对所有类之间的关系有着比较清楚的认识,把类图都画出来~像我就一直纠结于什么时候添加事件处理程序,什么时候把消息路由出来等等架构上的问题,但是又不能总是打扰Troy~来公司10周,感觉阅读代码的能力提高了好多。以前阅读别人写的代码最多仅限于一小段算法的实现,整个程序的架构什么的都没有经历过。CSDN上以前有一个人写过什么xxx源码剖析,结果全是一行一行地分析人家代码在干嘛,这个本事连初中生都会了。。。现在我有经验了,知道了看代码应该先从功能入手,再扩展到整个的架构。而看代码是怎么实现一个功能最好的就是先大概浏览一遍代码,在不太清楚的地方加上断点,然后调试一遍,整个过程就可以了然于胸了。之前看Janus,现在看OWL都是采用这样的方法,感觉还不错~=D然后就是代码的书写风格和水平了。这时候注释的作用就体现出来了,很多时候对于一个函数的命名,两个人可能就有两种理解,这时候要是有关于这个函数哪怕是一点点的summary,都可以让后来人很容易地知道它是干什么的。Troy还曾提过一点就是他一直没有时间写文档。如果阅读代码前有任何关于这个软件的文档,应该首先浏览一遍,文字永远比代码清晰。

至于代码,因为有了Troy的讲解和原来我的Demo再加上自己的理解,虽然刚开始的时候很痛苦,常常不知道要怎么写下去,但是参考一下其他做同样事情的类的写法,还是很容易的就写出来了。本来Troy让我先写录制再写回放,我却先把回放写好了,看着OWL自动播放我的脚本,哇,那种成熟感真是帅呆了~很多程序员都是因为看到自己写的代码跑起来很有成熟感而不断坚持并且获得动力的吧,这个是我们的精神来源啊~

Category: 日记  Leave a Comment

这周开始我正式加入到OWL的开发当中去了。算一算时间,来公司也已经10周的时间了,这10周,一进来我就做了一个Provider的原型,帮忙做了一些Automation的测试,又写了一个小的Utility,其实比起很多同期进来的同鞋已经算是很幸运的了。有的时候和他们聊起来,他们会说,啊呀,我又在fix bug啦什么什么的,虽然修bug也是加入参加产品开发的必经途径之一,毕竟一款成熟的软件,经过了那么多年的开发,基本的框架都已经定型了。这时候程序员的工作就剩下开发新的特性以及修改原有代码的bug~实习生么当然就先从修BUG开始,才能慢慢融入到这个产品中去。而我们Team的东西因为是给内部QA测试用的,而且开始的时间也晚,所以都还没发布呢我进去当然就是帮忙一起开发啦。而且经过了前面三个小项目的接触,我对OWL的流程也有了一定的了解,这个星期就要开始为Combo Box提供监听、录制及回放了。说到Combo Box,本来其实这个控制是很统一的,然而在Inventor里面还愣是出现了三种不同的:普通组合框、WPF写的组合框以及一个自定义下拉列表的组合框,对这三个组合框需要不同的处理~于是老样子,祭起已经很熟悉的工厂方法模式,监听Automation消息~一个Demo很容易的就做出来了。当然只做自己的demo是不管用的,我必须要把代码整合起OWL中去。这就不是一个小工程了~Troy很忙,而Team其他人在忙TER的事情,所以这看代码主要还是得靠我自己。其中Troy花了两个下午各2个小时左右的时间,从录制和回放的角度给我说了一下大概的框架,加上我自己对代码的理解,还是有一点点想法的~不过要让我马上手动加代码进去修改,还是有点难的。。。果然软件设计是项大学问,尤其是在多人合作的时候。。。以前在学校都是各管各的,完全体会不到~哎,软件工程看到这门课还是很重要的啊~