小狗惨叫:Web前端研发工程师编程能力飞升之路(5)

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 23:59:41

五.【化蝶】

破茧重生,这个层次关注的是编程语言本身,而不再关心产品需求。什么是茧?产品需求就是茧。当你一招胜万招,打遍天下需求之时,你如果还拘泥于需求开发,那就是你限于茧中而不自知。要么就在这个茧里默默地老去,要么就破开茧获得新生。

还是以那个“字符串剪裁”的老例子:

  1. /**  
  2.  * 在拼接正则表达式字符串时,消除原字符串中特殊字符对正则表达式的干扰  
  3.  * @author:meizz  
  4.  * @version: 2010/12/16  
  5.  * @param               {String}        str     被正则表达式字符串保护编码的字符串  
  6.  * @return              {String}                被保护处理过后的字符串  
  7. */  
  8. function escapeReg(str) {  
  9.         return str.replace(new RegExp("([.*+?^=!:\x24{}()|[\\]\/\\\\])", "g"), "\\\x241");  
  10. }  
  11.  
  12. /**  
  13.  * 删除URL字符串中指定的 Query  
  14.  * @author:meizz  
  15.  * @version:2010/12/16  
  16.  * @param               {String}        url     URL字符串  
  17.  * @param               {String}        key     被删除的Query名  
  18.  * @return              {String}                被删除指定 query 后的URL字符串  
  19. */  
  20.  
  21. function delUrlQuery(url, key) {  
  22.         key = escapeReg(key);  
  23.         var reg = new RegExp("((\\?)("+ key +"=[^&]*&)+(?!"+ key +  
  24.   "=))|(((\\?|&)"+ key +"=[^&]*)+$)|(&"+ key +"=[^&]*)", "g");  
  25.         return url.replace(reg, "\x241")  
  26. }  
  27.  
  28. // 应用实例  
  29. var str = "http://www.xxx.com/?pn=0";   // 删除指定字符 pn=0 
  30. delUrlQuery(str, "pn"); 

这段代码相对于层次4《入微》有什么区别吗?从代码实现上来说没有太大的区别,但是从思路上来说却有着本质的区别:1、不再是就事论事,头疼医头,而是把一类问题抽象理论化,一招破万招;2、有封装的概念,不再是每次从零开始,而是站在半山腰开始爬。

在WEB前端研发队伍里也有很大一部分人《入室》层次时就自我感觉良好,直接跨跃到《化蝶》,积累自己的代码库,抽象化问题。但没有基础,缺少强大的后劲,即使能够破茧也经受不了风吹雨打。一份不成熟的架构设计对团队开发带来的危害远大于它带来的好处,这种例子在业界屡见不鲜。不要拔苗助长,不要不会走就想着跑,夯实基础,水到渠成地成长,厚积薄发,强力地破茧而出。

【进阶之路】

你已经从原始积累,到厚积薄发,到破茧而出之后,你所关注的应该不再是一招一式、一个项目、一个模块,而应该是一种思路,一种理论。你可以做以下几个步骤以突破到更高层次:再仔细看几遍HTML/CSS/JavaScript接口帮助文档;选择一门强语言(C++/C#/Java等)观察理解这些语言的组织结构,语言设计;看看原型链,链式语法编程,泛型,接口编程,DOM遥控器等等;仔细阅读成熟的WEB前端开发框架的设计文档,看他们为什么要这样设计。