background image

  同样以上面的那段

“字符串剪裁”代码为例:

var

 str="www.baidu.com/?page";

str=str.replace(/?page/,"");
alert(str);

仅仅解决问题对于

“登堂”阶段来说已经不是问题,这个级别所给出方案不能是漏洞百出。以上面这段代码为例:

replace 方法的第一个参数虽然可以支持字符串,但最佳的类型是正则表达式; 

var

 a = 

new

 Array("日", "一", "二", "三", "四", "五", "六");

var

 week = 

new

 Date().getDay();

var

 str = "今天是星期"+ a[week];

alert(str);

对比

“入门级”的代码,不管是从代码量、代码效率、代码优美性、代码思路来说,“登堂”级的这个日期处理代码都要

优秀很多。

 

  【进阶之路】

  这个阶段虽然能够给出正确的解题方案,但是不一定是最优秀的方案。如何才能得到最优秀的方案呢?首先就
是积累各种能够解决需求的方案,然后再验证每个方案,在这些方案中选择最好的一种。因此该阶段的进阶之路就

“行万里路,看万卷书”,积累各个需求的各个解决方案。

  你可以扎身在专业论坛(蓝色理想、无忧、

CSDN)里,通读所有的 FAQ 及帖子;你可以打开搜索引擎,穷举所

有的搜索结果。自己建立测试环境一一验证这些代码:去揣摩每段代码的意图,去比较每段代码之间的差异。这两条
路可以让你快速完成原始积累,当你再面对大多数需求时能够说这些问题我以前做过,那你就水到渠成地晋阶了。

  三

.【入室】

  最强代码,知道所有能够解决需求的各种方案,能够选择使用最优秀的方案满足需求。这个级别基本上产品开
发编程中的代码主力。给出的一招一式,招招都是绝招。

  还以上面的那个例子为例,你能说出

1、2、3 之间的差别,以及适用于那种环境吗?

var

 str="www.baidu.com/?page";

// 1、字符串剪裁

str.substring(0, str.indexOf("?page"));

// 2、正则表达式

str.replace(/?page/, "");

// 3、字符串分拆、合并

str.split("?page").join("");

能够解决问题的方法会有很多,但是对于程序员来说应该选择最优秀的。上面这段代码从代码量来说

“正则表达式”

最优秀;从代码执行效率来说:

“字符串剪裁”法最高(Chrome 中“正则表达式”效率最高),split 法最次;从可

扩展性上来说,

“正则表达式”法最优。具体使用那种方案视具体的需求环境而定。 

  

“入室”阶段,程序员应该能够肯定的回答:对于这个需求而言,我的代码就是最优秀的代码。

  再以

“今天是星期几”为例,“登堂”级的代码你敢说是最优秀的代码了吗?

// 计算系统当前是星期几

var

 str = "今天是星期" + "日一二三四五六".charAt(

new

 Date().getDay());

对比

“登堂”级的示例代码,上面这段代码给你什么感受?程序员追求的就是完美。“入室”级别追求的就是每一招每

一式的完美无缺。