.NET系列 之 关于拿来主义

上篇末尾的时候谈到,微软和Java阵营对待自己的程序员也是有些不同的,今天就来谈谈这个问题。

首先来明确一下程序员的工作主要内容和生活的主要内容,然后再具体谈这个问题吧。毕竟这些才是基础,才是问题的关键。大体上来说,人分为两大类,一类是相对懒一些的,一类是相对比较刻苦比较愿意钻研一些的。为什么我不用懒和勤快两个截然相反的词语呢?这是因为,一个真的懒人是不可能做程序员的。程序员讲究的是非常多的逻辑思维和刻苦攻关,而不是好逸恶劳好吃懒做。

那么这里说的相对懒一些,是什么意思呢?这里说的懒,主要是指比较关注于业务逻辑的实现而不是纠缠于底层实现。也就是说,他更乐意去写一些和实际生活,和业务有关的代码,而不是去写一些什么算法或者集合类的实现。你让他去写一个线程池,估计会无趣死他。不过也有另一类人,不乐意写一些业务代码,而愿意写线程池的。

我并没有将两者进行比较抑或是褒贬的意思,毕竟两种都是正常情况,也有更多的人的游离于二者之外的第三类,也就是都乐意写一些,都写的不是很好的。作为一个成年人,或者说一个过来人,更多的是应该包容和宽容,接受各种事情。存在即是合理。但是呢,我还是要对这个问题说一些自己的想法。

一个项目要正常开发,部署,实施,要面对很多很复杂的环境。比如说,每个操作系统的不同。相信都遇到过,在一台机器上可以运行,在另一台机器上不能运行的事情。同样都是XP,同样的环境,对吧。再给出一个例子,一个很简单也很常见的例子。我们要做一个MIS系统,最常见的展示方式就是表格。在J2EE项目里,最常见的做法是在页面上用C标签循环表格。以前的项目,有的是在页面写ScriptLet来用for循环输出的,也有的公司是自己写一个表格控件。以上三种都是在Java世界里通常能见到的事情。前面两个显然能把人累死,每次都要自己控制table等等一大堆HTML标签,很别扭也很累人。自己写个标签会略微好一些,但是调试标签也需要对HTML标签有很深的理解才行。况且,你一个,我一个,估计十八个公司会有十七个半自己实现标签,剩下半个是觉得不好用自己循环输出的。

下面就要面对一个问题。自己实现的代码,会不会有问题?这个谁都难说。技术再高,也预见不到所有的情况和应用场景,出问题是很正常的事情。然后改一个牵连出其他问题,或者是发现这个问题却不敢动不敢改,怕改出问题影响到其他业已成型的代码,是不?

这个还算简单的。如果遇到类似URL跳转之类的东西就更麻烦了。WEB服务器上的东西还是很累人的。比如AJAX异步刷新,自己写的话,即使是使用jQuery也会要一段时间。而且还不好调试,毕竟这个是异步的请求和响应,要考虑的问题略微多一些。

下面来看看.NET的解决方案。.NETWEB组件里有一个叫做DataGrid,这个东西可以轻松实现表格展示,包括无刷新的列头排序,无刷新翻页,交错行等特效。这些效果可以说基本上是每个WEB项目用到表格时都会用到的效果,现在由一个组件一次性实现完毕。要用的话,第一选择当然是用这个。如果说遇到一些问题,那么可以去MSDN等地方查询。也许不仅仅是你遇到过,毕竟天下这么大,很可能你遇到过的问题已经FAQ了,对吧。

至于Ajax,微软有个组件叫做UpdatePanel,是个容器,把要无刷的控件丢进去,再配合其他几个控件,就可以实现无刷新效果。

虽然说,这些控件的性能不是很好,不能适应大数据量的情况。但是一般来讲,我们能用到高流量的又会有几个?我目前开发过最大的项目是每天67G数据进入数据库,刷新页面时查询流量大约在1M左右。这个级别的项目肯定不能用控件来做,或者说不能完全依赖控件。但是其他一些MIS系统,我都第一时间选择控件。

要问原因?很简单。方便,舒服。都是要表格,都要交错行,都要列头排序,是吧。那我用控件,按照SDK上的说法配置一下,世界就太平了。我可以用多出来的时间去陪家人,去陪自己应该陪的人。最少,最起码,我睡觉也好吧?

说到这里我想起来我以前做过的一件事。最近三国杀这个游戏很火,有一次我和老妻去逛街,遇到一个小伙子拉着女朋友过来买三国杀纸牌。当时小伙子很纠结,到底是买正版的还是买简化版的,相差二十多块。用起来一样用,仅仅是印刷的纸张什么的有点差距,还有就是包装精美程度不同。小伙子纠结的开始抓头发,站着不停的自言自语。我只和他说了一句话。

“买便宜的。都是玩,难道你每天抱着包装盒睡觉?剩下的钱去买几个鸡腿吃也好吧?”

也许会有人笑出来。看您这话说的,从开发蹦到三国杀,又蹦到鸡腿了。不过这体现了一个方法论的问题。我们作为WEB程序员,应当将更多的时间和精力放在实现业务上,而不需要纠缠于表格或者什么连接池之类的东西。这些是必须而且是非常必须的,毫无疑问的组件。小伙子买个三国杀回去,无非是要哄女朋友开心。既然女朋友不是要看包装盒而是要三国杀,而且越喜欢三国杀纸牌折旧速度越快。那还何必买好的?我想,除非是非常好面子不会过日子的女孩,否则都会喜欢多吃几个鸡腿吧,呵呵。

究竟是要每次搭建WEB项目都去找C3P0或者DBCP过来,然后再纠结的配个半天的SSH,还是找个可重复可重现的框架来用?说个笑话,即使您公司有搭配完善的SSH框架可供每个项目使用,那么,时间长了,还有人会改,或者说愿意改,或者说能改么?只是拿来用的东西,自己没有参与进去搭建,要改问题都不好改,对不对?

在可复用性这个方面,无可厚非的,微软是做的非常优秀的。开闭连接是个非常奢侈的操作,所以几乎每个项目都需要连接池,那么连接池就是标配。就好比你在公司要喝水,却每天拿个纸杯,烦不烦?干脆搞个杯子算了……这里偷偷说一句,我更懒,直接去买了个水果罐头,玻璃杯的。吃完罐头就用水冲一下当茶杯用。用个把月换一个。不准笑我……

微软的数据库连接在默认情况下是已经实现了连接池的。当然,您也可以不用连接池,在构造函数里显式指定一下就可以了。不过我想很少有人会这么做吧。

我们普罗大众,更多的是一些普通人,一些很平凡的人。我们更中意去做的,还是过好日子,和家人一起。经常听到坊间流传一句话,四十岁之前拿命换钱,四十岁之后拿钱换命。其实二者都没有必要的。挣钱是为了什么?为了更好的生活。可能年纪小的时候不觉得什么,自己过好全家不饿。年纪小的时候呢,父母年纪也不是很大,还可以给自己很强力的DBS输出。但是要考虑一个问题,年纪大了以后怎么办?从二十五岁以后,其实体力是走下坡路的,一年不如一年。更何况,三年五年的时间是一晃即过的。可能准备看书的时候是春天,然后看几天就不耐烦了,于是开始玩,开始混日子。等混够了再一看,已经到秋天了。换言之,懒惰是进步的天敌。

也许有人会说,人的天性是喜欢玩的。这一点的确不假。还有一句话就是,人的天性是不喜欢简单机械的重复的,是喜欢创新的。所谓喜新厌旧,即是如此。程序员中更多的应该是男性,所负担的责任也更加多一些。身为一个男人,生活中不仅仅是要和代码一起,和工作一起,也要和家人一起,对不对?不要最后子欲养而亲不待,人间悲剧。外包公司之类的问题,我以后会专门开专题来说,上面是简单的谈了一些关于开发人员工作的想法和感触,呵呵。

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值