2012.8月,
经理问以前用过.NET没?
没。(09年自己是用过,但当时只是为了做东西,拿VC++,BCB,DELPHI,C#,各写了一个测试小软件的给同事和朋友们看来做比较,经过比较后一致选择了DELPHI;当时用PB6.5/9.0,但看的久了会生厌。所以也谈不上会或是了解。题外话,虽然说语言不重要,这是针对学,但对开发产品来说还是区别很大的,要考虑更换平台的代价,工期等等多方面的)
那你这两天学下.NET,下周用C#做开发。
用哪种语言?
学C#,现在做新东西基本上都是C#.NET了。
然后就借同事的《C#入门经典》第三版看了两天,每天看10小时。第二天看完了,发现才看了一半不到,太慢了。第三天是周六休息,自己加快速度又看了一天,终于只剩最后一部分没看了。
周一上班时,叫我做完日常的工作,就做快速开发框架(主要是增删查改的自动处理)和封自己的控件。后来这个东西搞了一年,每天2/3的时间在上面,做这个非常无聊和枯躁,毕竟没有直接写一些应用系统容易,而且一开始不怎么熟悉面向对象。况且这些都不是最难的,难的是同样一个问题面对N种可以实现的方法,而每一种都不理想时,如何的做取舍。
开始几个周很难熬,期间,拼语句,传参,SQLBUILDER自生成,数据库复制,批量提交,模仿ORACLE JDE的控件,等等。只要是能找的到和想的到的方法都试过了,做是做出来了,但最终自己感觉也不理想。有同事嘲笑:“如果以后你去别的地方工作,别人问你会什么东西,你就说精通DataGridView,哈哈。”,听别人这么说心里也挺难过的,如果自己每天花那么多心思做控件,以后哪里有饭吃啊?此时很想放弃,毕竟自己做不到那么好的东西,无奈提意见说用分层的工厂模式挺好的啊。但是挨了顿批后,又接着做。慢慢开始东西也开始处理的比较漂亮,通用时询什么的也很好用,但最核心的东西最终还是没做好,并不理想。
后来进了另一公司,老大是以前开发商业软件的,开发控件和架构的能力比较强旱,去哪里工作都是要别人公司先买他控件和平台的。第一次看到,还有这样打工的,怪不得别人每年收入是几十W的。
记得第一次用别人的东西的时候,代码看上去因不像平常能见的方式,非常非常认真的看了一两个小时,才开始从简单的单表开始做ERP系统的功能。在这里很苦,那主管(没有经理)是每天能做到夜里两三点的,有时候到第二天。在进去第二周的时候,每天连续工作16个小时,除了吃饭20分钟直接连班,搞了半个多月,终于熬不下去了,就对他提意见说这样做自己吃不消。他说,没人规定啊,上班就8小时,你下班了觉得累的话可以休息的嘛。我晕!
上了社会后,做东西别人是没有义务教你的,而且那些源码在网上也找不到的,后来通过各种途径到走的时候,也只得到一大半的代码。别人自己核心的东西也是花了很多精力和时间的,虽然说的很好,但不可能都示人的。研究了他的东西两个月,终于掌握了这种开发平台的开发和控件封装。因为每个人的框架都不得不结合数据库的设计,所以有会有局限。不得已,又网上啊,问别人啊,看了非常多的框架。在网上和现实中,用.NET的做分层(特别是基于李天平的工厂模式)的最多,也有几个别人不一样的思想做的比较好的东西(理想架构不一定实用,但确实能学到不少东西),有的自己写的引擎去在软件投入使用时,会动态分析和生成等等,这样一年里学了不少东西,虽然不一定实用,还是开阔了眼界,毕境别人做的很专业。不过这些都是面象对象的做法,开始个人也开始很喜欢这种面象对象的设计(特别是这种机制对于字段值增改前的检测比较好,容易查BUG),但后来现一些问题,这些新方法有很多优点,但缺点也相对非常明显。
这期间有个公司招人,就想去改做棋牌游戏去的,催了几次后就放弃了,后来因为别的原因还是没有换工作。然后兴起也开始看一些游戏设计的东西,记得有本书里提到过各种引擎的设计方法,最终发现面向对象的不是其中最好的(至少如果再考虑硬件的因素后),只是用时会相对简单方便些。后来自己接了几个私活,每次都是连续两个月没睡什么觉,很累,被人催进度催的精神崩溃,用C#2008做的,才真心觉得POWERBUILD是个好东西,也开始真正感到快速开发框架还是蛮重要的。这样开始反思自己真实的需求,也特别想弄明白PB的数据窗口是怎么做到那么好的,但资料找不到,找到的都没多大实际的用处。
这样,发现又回到了从前,12年经理说的,那种分层的做法不理想,不够灵活。这样几年转了一圈,发现又回到了原点。也发现,还是海哥的东西牛逼,做商业控件的确实考虑的问题多一些,就是最简单的东西,也会考虑N种实现方法,哪种最复杂,哪种最好用最简单。而且最主要的是,他的和当初经理需求的那个东西的需求是一致的(除了数据库切换不理想之外,说实话别的方法也不能真正跨数据库种类)。
主要还是要看开发的产品的应用领域和工期等等许我东西的。虽然.NET和三层个人觉得用起来会松一些,但不适合做产品,至少C/S的不是很合适,如果是商用产品的话(个人觉得PB和DELPHI较好,但资料不多,也没落的很,除非是自己做公司做商业产品,那又不一样)。
然后自己做了几个版本,感觉还是不理想,自己用还可以。但用了框架以后特殊情况需要大副度修改功能的时候,灵活性就会差。因为继承用过来的东西多,有的改不了。当然这种情况很不多。各种东西看了用了N多,还是PB好。
后来放下了,看游戏引擎,QT,GTK了一段时间,后来着重看VCL,最后还是重看MFC,因为.NET所谓的开源,最核心的几个基类都是做在运行库和编译器上的,VCL也一样,理想框架只能和编译器结合。还是得重温MFC。
当然,每个人的人生路和经历也不一样,我只是把计算机当成是一种爱好,也只打算这几年打工时做做程序员,以后肯定回家种地的。所以从MINIX什么的都想一时兴起就看,不会去专门搞个什么东西,每个人的目标不一样,想法也不同。不能要求我也是你一样,这个要相互理解。
写这个本来是想重新从零开始做组件,框架,皮肤之类的给自己用的(放在网上不会丢),结果想起来最开始的事,跑题了。