这周开始我正式加入到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个小时左右的时间,从录制和回放的角度给我说了一下大概的框架,加上我自己对代码的理解,还是有一点点想法的~不过要让我马上手动加代码进去修改,还是有点难的。。。果然软件设计是项大学问,尤其是在多人合作的时候。。。以前在学校都是各管各的,完全体会不到~哎,软件工程看到这门课还是很重要的啊~
Tag-Archive for » 实习周记 «
这周一一来Troy就说又想要新的格式化字符串,但是这个C#自带的那种Format又无法支持,于是他说那就先Hard coding到代码里面去,或者自己写一个可以自由输入命令的小东西出来~时间那么紧,我还没有完全做好心理准备,于是就先硬编码后编译了一下给他用,然后我就自个儿琢磨这玩意儿要怎么写。觉得到公司来养成了一个很好的习惯,就是在写代码前自己会在笔记本上写写画画,把这个小块的类图啊,状态关系啊,甚至是流程都画一遍,发现这样在写起代码来确实能够让思路更清晰,也减少很多异常情况没有考虑的机会。这次在写这个自定义命令的时候,我又应用了一个模式 – Factory Method Pattern,不过因为都没怎么写过,有点忘了,后来在Wiki上认真地又看了一遍才开始动手写。BTW,以前一直觉得Wiki其实没有那么神,再加上前一段时墙时不墙的,几乎没上过,来了公司以后才发现,这是个好东东啊,难怪那么多人对它趋之若鹜。说回代码,设计模式的确博大精深,在这么一个小地方运用了这么一个小模式,我就感觉受益匪浅,以后如果要自己添加命令,只需要自己继承一个类,改写好那些纯虚函数,一切OK,以前的代码基本上不需要改动便可以运行,这在大型的软件项目中是非常非常重要的,因为你改动一个地方就可以导致很多其他引用这段代码的地方需要相应的更改,也有可能引入很多的regression。就像上次Troy给我Review代码时所说,我们往里面加东西,一个很重要的原则就是对原来的代码修改地越少越好。接下来我又做了一个我自己加上的需求,tag name那边我加了一个自动提示框,就像Google那样可以根据输入自动给出对应的提示,技术上其实不难实现,就是用ComboBox的下拉框来模拟这么一个效果~这样以后用这个软件再也不用费神去原来的xaml文件Copy/Paste了~在后半周我就开始了对OWL的测试,这也是我毕业设计可以涉及到的东西,
这周又开始了新的任务,我以为Troy还要Review我的Provider的代码所以我可以忙里偷闲一会儿的时候,Troy和我说,要从Miles那里转一个任务给我 — 果然,在公司里很难得会有轻松的时候啊。那个任务挺简单的,是做一个小工具帮忙我们修改Inventor的xaml文件,具体的说就是能方便地修改AutomationID以供接下来的使用。其实Miles已经做了一个原型出来了,能够读文件,解析Id属性,并且能够单个修改,但是还是远远不够,因为我们可能要面对的是大量的修改工作,然而他还有其他工作要做,所以我就揽下了这个活儿~Troy说最好周三就能用,可是我接到任务的时候已经周一下午了~没关系,相信我自己的水平,HOHO~说到这个任务,比较麻烦的就是在界面上面~因为这是我第一次写WPF的程序,还是比较生疏的,这次要用的又是一个比较灵活的控件 – GridView,在怎么动态添加列以及WPF特有的Data Binding上,我花了好大的力气,周二一天就泡在这上面了,本来以为要加班,不过最后很勇猛地在下班前五分钟搞定了~哈哈,还是要多谢Miles,已经写好了很多有用的函数,我只需要调用就好了~虽然和他之前没有过多的交流,不过这或许也能体现出软件工程上面对接口定义的要求?总之周三给Troy的时候他还是比较满意的,后来他又提出要求,说希望能格式化AutomationID的输出~看,客户的需求总是在不断地变,于是做为“软件工程师”的我们只能不断地修改代码,以符合客户的需求。不过这个以前在学校完全没有接触过,在学校做课程项目的时候,我就是自己的客户,哼哼,什么要什么不要全由我说了算,做出来了就拉倒,根本不可能涉及到需求变更的情况,这也是公司的实际情况和学校的理论情况的差异吧。这里面涉及到的代码重用是我一直跃跃欲试的area,不过具体到这次的变更,其实还没有那么高深,加一个对话框再改一处函数就可以了~很轻松地解决掉以后就到了周五了,例行性地偷懒,于是这一周就结束了。
这一周比较闲~因为周四周五的时候Troy请假了~所以这两天子明告诉我怎么用iFlip对Inventor的一些Transcript进行测试,因为Team里面现在要准备一份报告,人手不够,所以我要帮忙加入进来~内容非常非常简单,我就不说了~可是因为我这个破电脑…所以周四一天基本上在装Inventor2010了,还没装好~~会有一个Licensing Error从而导致iTest无法在我这台机器上顺利运行~没法子,子明只好给我在服务器上开了个帐号,然后远程登录来跑这个Test了~~
头三天我在干嘛呢~因为Troy对我在C#中以发消息的方式和Provider沟通不是特别满意,所以他希望我能修改一下代码~可是这个挺麻烦的~Provider既要和C++沟通又要和C#互操作而且还要编译进一个Dll里面…难度挺大,至少我找了一天也没有找到什么解决方法~最后新建了一个C++/CLI工程~Provider用传统的C++和dllexport来做,至于C#,就用C++/CLI重新写了一个Proxy类,通过这个类来调用我的Provider.最后,在Provider上我加了一个Singleton模式~这可是我第一次用模式啊!小激动一下~~最近的效果挺好的,不过Troy比较忙,一直没什么时间给我Review,估计这个可以要拖下来了~
在公司的另外一个收获就是短短的7个星期我已经搜集了11本电子书了,而且是我几乎都没看过在.NET上特别新的书~~这个收获还是不小哒~哈,等实习结束以后好好学习~~C++、C++/CLI、C#,我就走C字路线鸟~~
在公司又过了一周啦,这周很巧的,赶上了中秋节,所以这周只用上四天班,其实觉得上班时间过得好快呀,早上写写代码,很快就11点了,然后和子明他们去吃顿中饭,回公司上上网,下午写写代码,然后就下班了~他们都不是很早走,害得我走的时候怕怕的,不过Tony说没关系,只要没什么事就可以走了~那我就只好走得心安理得啦~哈,这周的任务是继续进行马尔康项目.话说目前我对公司和自己做项目最大差距的感受就是,我们自己做项目,理想客户就是我们自己,所以在做不下去或者实现起来很麻烦的时候,我们就会放弃这个需求(其实就是偷懒…)但是公司就不一样了,有的时候碰到没有API提供某个功能,去找Tony,他都会说那没办法我们只好自己实现这个功能了~所以本来我计划周四就可以做好了,没想到有一个Mirror命令没有API支持,所以我需要自己去计算坐标自己去画图~客户是上帝啊,上帝动动嘴,程序员就要累死累活地去实现一个东西,其实这个功能完全可以通过一些比较麻烦的步骤实现,也就是说程序员不能偷懒来帮助客户偷懒~~HOHO~这周虽然还是用VBA写东西,但是还是学到了不少东西,比如说Mirror命令对比Pattern命令,我感觉我自己对它的设计更好,于是修改啊扩展起来就很方便,不像Pattern,改一个地方有很多Related的地方需要修改,1300多行代码找起来可不是那么容易的…同时我发现我的立体解析几何学的是那么差…在这个项目里面用到了太多坐标的知识,需要用到各种向量运算,但是可惜我已经忘光了,所以需要常常去麻烦Tony(我都不好意思了一直打扰他的工作…)还有Paul,数学牛人啊,向量在他手下那可是服服贴贴的~看来以后读研了要好好加强一下自己数学的基础知识了啊~周五的时候,除了一些小的Defect,其他的几乎都已经完成了,看来进度比Tony想的要快,所以看到两次他对我伸出大拇指了,那还是相当有成就感的啊~对了,我们Team每周四下午还有例行的会议,内容很有劲,我决定下篇周记来描述一下~~

最近评论