《当程序员的那些狗日日子》(十三)重组程序
几个星期后,我已将网站论坛系统的细节问题处理好,网站论坛系统也终于可以摆上线了。看到我自己竟然也能做出一个相对完整的论坛系统,我心里感到很欣慰和兴奋,并有几分成就感。虽然这个网站论坛系统放到整个互联网上是那么微不足道,但毕竟它是我几个月来的心血,或者说从我刚开始学习网站开发技术时起,我就倾注了很大的心血,这是我付出很大心血后的“结晶”,所以显得弥足珍贵。
盈回家过完春节后,她的家人希望她留在家中的县城工作,而且她不久后就在县城的一个公益性机构找到了一份差事,所以她就留了下来。但是我和盈仍保持着联系,除了平时在QQ上聊天外,有时我也会给她打电话。电话中盈总是很乐意跟我说她最新的情况,说她工作中的事情,说她的烦恼,言谈间听得出来她并不喜欢目前的工作,她还想再到北京来,但是她家人又希望她留在县城工作,所以她内心很矛盾。
盈的老家是在河北承德下面的一个县,到北京来很方便,如果此时我让她辞掉那份工作而再到北京来,我想她一定会辞掉那份工作的。但我并没有让她辞掉那份工作,而只是在QQ上或电话中开导她,给她解闷,我更多的还是把她当成一个妹妹来看待。所以后来盈就继续做着那份工作,一直到后来我也不知道的某个时间。
交由万网公司去做的网页改版的工作仍在进行中,虽然他们的设计人员已设计出了网站首页效果图的好几个版本,但都不能让小李总觉得满意,究其原因,一是因为他们的设计人员也并非是什么高手,难胜任务;二是因为他们的设计人员毕竟对我们公司的票务业务需求不了解,不能真正理解网页上要实现的功能效果和布局。因此网页改版的工作仍不能在短时间内完成,我们只好继续等待。
由此也可见,虽然万网公司规模较大,但他们的设计人员也无非是像我或小京这样的职场之人,其水平难免有高有低,所以万网公司的设计实力也不见得一定就强。
网站论坛系统摆上线后,虽然偶尔会遇到一些小Bug需要修正,但问题毕竟不多,所以我上班时反而出现了难得的空闲状态。这正好给了我一个难得的时机,我可以利用这些空闲时间去重新组织公司网站类库项目的程序代码,以便在网页改版工作完成后需修改公司网站的程序时,我可以进行改动。
借助Reflector这个反编译工具,我又将由公司网站的类库项目所编译出来的DLL文件进行反编译,然后再阅读这些反编译出来的程序代码。我给自己定的要求就是,一定要将这些程序代码读懂后,才将其放到之前已建立起来的新类库项目中去重新组织起来。除了阅读这些反编译出来的程序代码外,我还需要结合网站页面的代码后置类文件程序代码、网站的数据库和网站功能的实际操作来一起理解。这是一套系统性的网站系统,所以只有这样结合起来才能真正读懂这些反编译出来的程序代码,并弄明白公司网站程序所反映的实际业务逻辑,也只有这样,我才能真正对公司网站程序有一个全面的了解和把握。
自己编写程序是一回事,阅读别人开发出来的程序又是一回事。自己编写程序,我可以按照自己的思路去进行,但阅读别人开发出来的程序,我就必须将自己的思路转变成开发者的思路。尤其是此时我所阅读的,是ASP.NET程序,而ASP.NET是我刚刚学习过、但还没有真正用于开发实践中的。所以这对我来说难度不小。而且公司网站的这些ASP.NET程序本身也相对复杂,所以我读起来就难度更大。
但是这些难度相对于我几乎从零开始去学习网站开发技术的难度来说,以及相对于我将那本厚厚的六百多页的ASP.NET的书学完的难度来说,几乎不值一提。于是我凭着自己的执着和毅力,又开始了新一轮的尝试。
很多事情往往都是你尝试过后才知道,原来你行。经过一番努力,在克服最初的困难后,我对这些ASP.NET程序的阅读变得越来越顺畅,而且从阅读这些程序中,我也渐渐理解了开发者的思路,通过阅读这些程序,我仿佛和这位开发者有了思想上的交流,我碰撞到了他开发思想中的精髓。这使我更深刻地理解了ASP.NET的机制和原理,以及领悟到了他作为程序员的良好的编码风格。他编写的每一行代码,都几乎作了最严谨的处理,以力求使程序做到简洁明了且逻辑准确无误,这正是一名合格的程序员的基本素质。正是受此影响,在后来我所做的开发中,我都尽量要求自己将代码写到最规范,并严格要求自己做到使程序逻辑准确无误。而且此时我在阅读中所看到的一些写得很好的函数和方法,我在日后的开发中也用到了。
虽然Reflector反编译出来的程序代码跟原代码在格式上(主要是变量名)会有一定的出入,但实际的程序逻辑并没有改变,所以我每读懂了一段代码后,只需将其稍作修改后就可以将其用到新类库项目中。阅读程序变得容易了,重新组织程序代码的工作也变得轻松起来。虽然不是自己开发,但这就像站在别人的肩膀上,可以看到更多和看得更远。在重新组织程序代码的过程中,我渐渐地感觉到自己在ASP.NET和数据库存储过程编写等方面的水平都得到了很大的提高。我也开始对修改公司网站的程序和核心功能有了信心,只要我将那些类库项目的程序代码全部重新组织好后,我就可以去做这项工作了。
我不得不由衷赞叹的是,公司网站的购物车功能、订单处理功能、票品产品发布功能等功能都做得很好,而且程序也写得很好,尤其是那个票品产品发布功能,在数据库的存储过程中用了三层嵌套的循环来处理数据的写入,可以一次就实现一场演出的多场次、多票价的数据写入,使功能操作简单便捷,工作高效。
听小魏说,公司网站程序就是上一程序员所开发的,那个程序员已在公司做了很久,原来公司网站程序是用PHP做的,后来他则用ASP.NET将其重做了一遍,这即是此时公司网站的程序。当然小魏并不懂得PHP和ASP.NET是什么,这是我根据她所说的内容理解出来的。小魏说,上一程序员也不是计算机专业毕业,而是靠自学学会的,而且水平也很厉害,但他要比我大好几岁,这时他应该30岁左右。所以我姑且称他为仁兄。
我根据网上所查信息得知,VS2003于2003年推出,这位仁兄在我2004年10月入职前已用VS2003(ASP.NET 1.1)来开发公司网站程序,而在我在公司所使用的电脑上我也曾看到过这位仁兄使用过VS2002(ASP.NET 1.0)的记录,由此可见这位仁兄早在2004年VS2003刚推出不久时,就熟练运用ASP.NET来进行开发了,他是应用ASP.NET的“先行者”。
这无疑给了我很大的鼓舞和信心,原来不是计算机专业毕业而走进程序员行列的,并不是只有我一人,而眼前的例子也证明了,不是科班出身也同样可以做得很好。
小魏说,在招聘我进来之前,这位仁兄正在做公司网站的新功能,但当时的总经理,即后来招我进来的那位经理的朋友,一再要求这位仁兄加快开发速度,而且给这位仁兄的开发需求不断变更,所以这位仁兄一气之下就辞职走人了,而且工作还没有交接完就离开了公司。
当中的是非对错,我无法多作评论,而且用小京的话来形容,这位仁兄有点“得瑟”,但这完全不妨碍我对这位仁兄的佩服和景仰,他仿佛成了我的精神榜样,让我更明确地找到了前进的指引和方向。原来这就是我所向往的技术“大牛”,而技术“大牛”也曾如此近距离地和我在不同的时间出现在同一个空间上,我此时在公司所使用的电脑、所坐的座位,都是这位技术“大牛”曾使用过、曾坐过的。
后来在我也到了快30岁,并也成了一名技术“小牛”的时候,我完全理解了这位仁兄一气之下就辞职走人的做法,对于那些不断要求加快开发速度、不断变更开发需求的做法,我也深恶痛绝。
直到现在,我都清楚地记得小魏所说的,这位仁兄是天津人,而他的名字就叫津。这位未曾谋面的仁兄,谢谢他!是他开发的这套程序让我在ASP.NET上走得更快。