昨天有人问我一个java servlet问题,说是httpServletRequest无法获得参数,让我帮忙看看。有问题的地方位于一个叫processRequest的方法中,我随口问了一句:“怎么起了这么个名字?”在我看来,如果真的要处理请求,应该是已经进入到业务逻辑阶段,最好用一个更具体的名字命名方法,而不是这么抽象的“处理请求”。
对方回答,我继承了HttpServlet以后netbeans就自动给我生成了这个方法,我就在这个方法里面去写了。我吓了一跳:一段日子没用servlet,就发展到这个地步了?我记得在eclipse中只有一定需要被实现的或者被重写的方法ide才会自动给你生成,难道servlet新增了叫processRequest的方法?赶紧goole了一下servlet的api,发现一切照旧,没有变化。那就是netbeans自作主张加上的吧,可是,doGet和doPost方法哪里去了,粗粗浏览了一下代码没有发现这两个方法。难道servlet已经不需要那两个方法了,直接调用processRequest了?想到一段时间脱离了战斗第一线再回来已经物是人非了,冷汗不由得从脑门渗了出来。
又仔细查了一下代码,发现有一行非常隐秘的折叠代码,这是什么东西?打开一看,正是doGet和doPost两个方法,每个方法体都是调用processRequest方法。
It's time to fuck IDE.
在我那个“时代”,如果程序员认定get和post方法应该使用同一个处理逻辑的话,会在get方法中调用post方法,表明二者之间是相同的。但是这绝不是表示这两个方法就应该总是相同的。netbeans不但傻呵呵地告诉广大新手,这两个方法其实没有区别,连这两个方法都默认隐藏起来,搞了一个不知所云的processRequest方法,把了解servlet规范的机会都剥夺了。
现在的ide约做越大,启动越来越慢,功能越来越多,可是.....我见过很多eclipse用了两年的“新手”,他们甚至不知道可以用ide自动为成员变量增加getter和setter,更不用说用ide重构了。ide在他们手里就是一个语法提示器,他们输入一个对象名,打上一个点,在一阵硬盘的轰鸣中从长长的方法名中选了一个看上去可用的点上去。如果说还有什么其他额外的用途的话,ide提供了一种一键运行的方法。只要点那个绿色的三角,剩下的事情就不用操心了。
IDE,也就是一个Microsoft Word。把内容搞乱的同时,还往使用者脑子里灌了一堆浆糊。
越来越多的人认识到IDE不应该给初学者用,因此IDE的目标对象逐渐集中到了高端用户,试图用越来越复杂的功能吸引眼球。可惜这些功能充斥了太多自作聪明的部分,最终不过是徒劳地占据系统资源罢了。当IDE越来越成为新手书写垃圾代码的利器(美其名曰降低门槛)的时候,谁会知道明天的ide会是什么样子呢?
没有评论:
发表评论