工作两年来 对VB开发的感想
我自从07年毕业参加工作以来,一直都用VB开发系统,但在大学中主要学习的是C、C++和C#,对VB一点也没学过,也是在心里压根就不想学VB,觉得VB的技术含量不高,是一个快要过时的丑陋的开发语言,记得在毕业设计时,有同学用VB开发的系统,叫我帮着调试,我对VB一点都不懂,看到VB6的开发界面就不喜欢,但还是硬着头皮去了,我用在C#中用的数据库连接方式,帮他修改了一下数据的连接,没想到还好用了,但这也没提起我对VB的兴趣。觉得我不会学习这个落后的语言的。更没想到的是毕业后进入了一家软件公司,本来以为会经常用C#开发系统,但从工作到现在我却一直用的是VB,几乎没有用其他语言开发过。但也是因为这个经历,使我对VB乃至其他开发语言的认识有了很大的变化,理解了许多开发中的道理,现在就随便瞎说说吧 ;) 说的不好处,敬请批评指正,不胜感激!
进公司半个多月,头说以后的开发可能用常用VB做开发,虽然不像进公司前公司给我们说的会用C#那样,但初来乍到,也就没什么意见,于是就花了3天时间学习了一下VB的基本语法,3天后,我基本上了解了VB的语法,也写了一些简单的程序,于是就开始了我的“VB的开发生涯”哈。VB中的许多东西和C#不一样,首先是语法格式很不同,很明显的是她没有分号哈,刚开始的时候很不习惯,又如,VB的工程是按照模块分割的,其中包括窗体模块,通用模块,和类模块,有时如果有比如Active报表一类的东西是会有新的模块,还有很多很多哈。虽然开始每天用VB开发,但我还是没有深入的去学习过她,只是把她当成一个工具,总觉得我不会一直用她,所以学好了也没用。就这样我使用VB开发了大半年。但是还是没有听说要用C#开发,于是心里很不是滋味,想方设法的劝头让我用C#开发,哈哈,点用都没有,因为我们小组根本就没有要用C#开发的需求。
直到需要大量用到错误处理功能的时候,我的想法有了改变,我开始深入的研究VB中的错误处理方式和原理,结合我以前在C#中使用的错误错经验(VB中没有try...catch语句,只有on error goto ...等语句),想方设法让VB中的错误处理满足我的要求。在这个过程中,我学到了很多东西,可以像使用C#一样来使用VB,利用Err全局变量来实现向C#中的try...catch语句,捕获的错误后用一个函数统一处理等等,慢慢的发现VB没有我想象的那么丑陋,用起了也蛮舒服的。在google的趋势搜索上搜了搜,VB也不是我想的那样没人用,还有从年度开发语言使用排行榜上看,VB还名列前茅呢。我发现自己以前的认识很有问题,光凭自己想象就随意的给VB下结论。
用VB做开发仍在继续(直到今天乃至以后至少半年),但我的看法早已变了,每天的工作,我已不觉得我是用VB在开发,只是尽最大的努力将自己的想法和业务的要求去实现,在开发中用到了各种算法,使用的表驱动法(见《代码大全2》),制作了和公司业务结合的控件,开发了能提高开发速度的共通模块和dll等等,只是尽力的去实现,对使用的语言视而不见了,哈,也许是我长时间的用VB开发,已习惯了她,就像我们对空气视而不见一样。但是更重要的是我意识到对开发影响最大的不是所使用的语言,而是代码规范、标准化和程序设计。
08年7月份公司招了许多新员工,每个开发小组都分配了十多名新同事,我工作了一年,变成了老人了,于是就有机会带领新人开发项目了。带领别人开发比自己开发困难多了,我觉得。自己开发不用交流,没有不明白的术语,没有不统一的开发习惯,意识完全一致,但一个团队开发就复杂多了。因此不能直接让新同事进入业务开发(新同事全部是应届毕业生),培训必不可少。虽然他们在进公司前培训的是Java或C#(公司有对新人的事前培训),对VB一无所知,但我花在VB语言讲解上的时间寥寥无几,大量的培训时间都花在代码规范和程序设计上了,我给他们一个类似POS机上扫描商品的小课题,没有涉及到外部文档和数据库,练习他们的逻辑判读能力和将实际问题用程序表示的能力。其中有个新同事,看到别的小组在练习如何连接数据后,问我为什么不让他们也练习那个,我说那个等你们开始业务后都就会了,但他还是很不满意,觉得我不给他们教技术。通过一段时间不长的培训,让他们学习练习了代码规范和程序设计,给他们讲了开发中交流的重要性以及应该如何交流,还有非常强调对公共变量的设置使用方法和规定,以及公共接口的重要地位。 很快新同事都进入了实际开发了,由于在培训期间的教育,我们几个人(我和几个新同事)的开发速度和质量很不错,因为在开发前作了很多准备工作,比如代码规范,命名参考对照表,以及以前做好的数据库连接模块等等,而且他们也对这些规范和约束有所认识了。那个以前对我不满的同事现在开发的很好,因为他对数据库连接模块的使用很上手。其实VB中程序和数据库的交互都被ADODB模块封装好了,不需要太到的技术拿过来用就行了,其他的语言也都大同小异。我们再利用ADODB模块开发成适合公司业务要求的模块,使用更加方便,配置更加简单也就更没有技术可言了,在平时的开发当中也就不会在在意怎么去和数据库交换了,就像使用高级语言一样对内存的如何分配就不用去理会了。其实用VB和用其他开发语言没有什么太大区别哈。
最近我用VB做了一个通用的修改INI配置文件的小工具,因为以前交付软件时需要在帮助文件中很费劲的给用户说明怎样去修改配置文件。我将INI文件中的小节名称放在一个ComboBox中,如果选择其中一条,就会在下面显示出这个小节中的所有项目,名称放在Label中,内容放在Textbox中,有多条项目的话就一一排列下来。我遇到了一个问题,每个小节中有多少个项目不确定,所以我在下面用多少个Label和Textbox也就不确定了,那么只能动态的给Form添加控件,但是添加容易删除却不容易,老是提示现在不是删除的时机,我晕。虽然最后用别的方法实现了,但这次的实践给了我很大的启示——如果我开发WEB程序的话就不会发生这个问题了,在WEB页上动态的添加一个控件岂不易如反掌。由于VB中作的程序都会生成一个exe可执行文件,在可执行文件中在玩动态就会很吃力,但WEB不是,她会在一次请求中尽可能的按照用户的要求生成一个Html文件,再由浏览器去显示,这样就动态多了哈。我对WEB开发一无所知,曾经学习了一段时间终于因为觉得他和windows界面程序差异太大,不能理解而放弃,反而在用VB开发中使我明白了一些WEB程序的原理有所认识,我觉得我应该能用VB开发一个WebServers,我只要能根据用户的请求去生成不同的Html就行了哈,说大话了哈哈,那根本是不可能的哈。
现在,我虽然仍用VB开发,但我从中理解了很多道理——无论使用什么语言做开发开发思想都是相通的,不能把自己的思想绑死在一种开发语言上,要深入一种开发语言去编程(代码大全2》)。我不会因为用VB而丧失了我对程序开发的感悟,磨灭了我对开发的信心,反而让我有了更多的感悟和更坚定的信心。
哈 瞎说了些想法,一定有不少不对的地方,敬请您指正批评,不胜感激!