Refactoring HTML 书评
很多年以前,面对上古时代遗留的 HTML 发出的腐臭,我捂住鼻子唉声叹气。刚练熟 web 标准的我,恨不得寝其尸食其肉,把一切推翻重来。但经理说,没有时间浪费在清理这些垃圾上,快给我把新的页面切了!可想而知,我是郁闷的。你也是,别装了,我知道。我常常处于崩溃边缘,作为一个有深度爱心和追求完美(这应该是所有程序员追求的品质)的 web 前端开发者来说,为何不许我为残障者着想,改善一些无障碍性?为何不许我把这些鸟b(读者最好不要连起来念),鸟i, 还有鸟u送上刑场?看着 W3C 校验器显示出的一串又一串的 erorr, 我灰心丧气,横眉冷对经理指,好像丫欠了我几十万块冥币,哦不,人民币……
皆因我不知道“重构”(refactoring)。
或许你第一次看到这个词,会欢呼雀跃,耶,“重构”,网站重构,一切重新再来?很明显,不是。相反,它的过程是逐步的,有时甚至是很微小的。作为一门在编程中的高级技术,重构是指“在不改变代码外在行为的前提下,对代码作出修改,以改进程序的内部结构”(《重构:改善既有代码的设计》,2003,中国电力出版社)。对于 HTML 来说,就是不改变 HTML 所表达意义的基础上,对 HTML 作出修改,以改进 HTML 的内部结构。是不是很简单?
读者都知道 web 标准的意义所在,很明显,重构的目的是改善既有的 HTML,向 web 标准进军。重点在于改善,而不是取代。在很多情况下,取代的代价远比改善大得多。如果才能做到最大化的投入产出比,很明显,答案是重构。
啰嗦这么多,到底怎么重构?特别是 HTML, 怎么重构啊,看着堆垃圾我就头痛,是不?很多公司的网站,我们可以看到,比如腾讯,雅虎的新推出的页面,都是基于 web 标准的了,但还是存在大量的旧页面,就算访问量巨大,也是纹丝不动。我相信,这很大程度上不是由于不想改,而是除了全盘推翻重头再来之外,实在找不到好的解决办法。重构是你的解药,宝贝。
由世界知名的 XML 专家 Elliotte Rusty Harold 所著的 Refactoring HTML: Improving the Design of Existing Web Applications 是你解药的配方。书中大谈特谈的章节不多,就第一章说说who, what, why, when, where,其他章节都是说 how. how, yeah, 就是到底怎么重构的锦囊妙计。书中从编程世界中“窃取”被证明是可行的、成熟的技术,很多可能是 web 标准实践者闻所未闻的技术,结合到 HTML 来,创造行之有效的新技术,解决 HTML 特有的难题。比方说,你关心过 GET 和 POST 是什么吗?知道为何 Google 爬虫爬一爬,很多页面消失殆尽吗?(嗯嗯,老油条们,我知道你知道(绕吧?),我在这里问的是“页面仔”)。关心过自动化测试吗?什么,你还刀耕火种,写一行就在浏览器刷一下看效果?知道怎么样批量校验你的页面吗?不要告诉我你一页又一页的把上千个页面轮番轰炸 W3C Validator…
不知道?那怎么还浪费时间看什么书评,赶紧的打开书来看啊!噢哦,没有书?google 一下,有得下。英文看不懂?很吃力?噢哦,明年中文版就会上市,嗯嗯,译者就是我……(终于露出狰狞面目)……
本书是探讨 HTML 领域的重构,是对重构这门技术的又一创造性运行。它从工具入手(我们知道,工具是重构的重要辅助),然后逐一分析良构(well-formness)、合法性、布局、无障碍、web 应用程序和内容等等需要重构的方面,提出问题,讨论理据(motivation)并提供行之有效的解决方案(mechanics)。对于接触 web 标准较少的人来说,提供了一个百科全书式的的参考,而对于我的同行们,sure, 亲爱的页面仔们,不仅可以查漏补缺,亦可学习程序工业中的先进经验,提升自己的“工业”素养。总之,这不是一本束之高阁的书。
编写 HTML 不仅是一门技术,更是一门艺术。你会了解的,在读了本书之后。在此我很严肃地说。仅以此献给中国所有的页面仔,共勉。

May 27th, 2008 at 00:24
看完推荐,想看了。。。
时刻绷紧神经充电。。。哈哈~
May 27th, 2008 at 08:49
安安的文章写的越来越有外国作者写作的味道了
May 27th, 2008 at 08:56
重构?很新鲜!
May 27th, 2008 at 09:09
明年几月啊?我想第一时间买一本看看。关注了~!
May 27th, 2008 at 09:10
开头一段太有意思了。借我两张10W的冥币
May 27th, 2008 at 09:39
共勉……共勉……共勉……共勉……共勉……共勉……共勉……(回声无限……)
May 27th, 2008 at 09:40
@JunChen 哎呀呀,看我的中文用得这么炉火纯青,竟然说有“外国”的味道,那我岂不是很伤心?呵呵,开个玩笑。
May 27th, 2008 at 10:25
真好玩呐~~~ ^_^小安写东西越来越幽默啦~~
May 27th, 2008 at 15:01
拒绝网站重构很大一部分意见来自于相对于传统(杂乱无章)的HTML,DIV+CSS没有绝对的优势,或者说标准支持者没有把这种优势发挥到最好。重构需要更强大的平台跨越能力和更多性能的提升,这是一些重构新手不具备的。
May 27th, 2008 at 15:50
原来WUID的中文翻译是“页面仔”呀 囧rz 感谢推荐
不过搜了下 网上没有pdf的 只有chm 看着不爽
May 27th, 2008 at 19:57
可能是最幽默的一篇日志。
May 27th, 2008 at 21:27
呵呵,我也纳闷呢,怎么突然写上书评了,当看到这儿时──“译者就是我”──便暗喜“果然不出我所料”
BTW,明年出的书,今年就开始做宣传了?有点儿小早啊~
May 28th, 2008 at 01:05
偶看到W3C校验器就会发麻。。。大侠赶紧啦,再不来菜就凉了
May 28th, 2008 at 09:14
你够狠呀,直接把我们胃口一吊就是大半年。哎~
May 29th, 2008 at 12:00
@realazy 老外写作时通常会加很多个人偏好的例子,比如《网站重构》一书中有形容简洁的代码为“80年代的贝斯那样灵动”(鬼知道80年代的贝斯是什么声音)……然后在第一版译文中被翻译成了“仅仅80行代码”……
May 29th, 2008 at 13:52
建议保存此文章,然后等你当经理的时候再回来看看
各自都有难念的经。
May 31st, 2008 at 17:03
重构是永远的疼,的确是循序渐进的。有时将某些样式提出来,就能大大改善冗余问题,有时候将一个不必要的外层标签去掉,而改用一句样式控制,会让你觉得很惬意。。。。
May 31st, 2008 at 21:03
果然…都被吊起胃口了…
这一招还是很有效果嘛….
作为《网站重构》的进介篇?
June 5th, 2008 at 11:01
恩,对于web标准来说,路还很长。借鉴程序工业中的经验和技巧确实能为我们web前端开发来说启发很多,另,我推荐有兴趣的可以看《代码大全》第二版,其中有很多章节也适合我们“页面仔”看,尤其是职业目标是web前端架构师的同学们。:)
June 6th, 2008 at 23:07
我是来赞模板的
June 7th, 2008 at 02:07
在68design上面无意中看见了您的BLOG,看您是XHTML+CSS布局高手。以后有什么问题能请教不?
June 10th, 2008 at 07:55
又要翻译新书了呀?realazy真勤快
上本精通JavaScript还没啃透呢。
June 10th, 2008 at 22:35
一不小心看到书评,胃口被吊起……
期待中文版出版了
June 17th, 2008 at 11:49
太搞了!!!
June 19th, 2008 at 12:58
你的这个blog界面……华丽且难看
June 19th, 2008 at 17:59
前端开发是一门艺术…真正掌握的人很少…要潜心研究
July 11th, 2008 at 10:14
唉,现在商业气息严重,能潜心修炼WEB标准化的人不多啊……
July 16th, 2008 at 09:43
“页面仔”哈哈,这个名称有意思…
July 28th, 2008 at 23:00
咋还是那么伤感呢?
October 4th, 2008 at 13:47
哦,译者就是你啊?
要不要考虑先放出前几章的PDF来看下?