Refactoring HTML 书评

作者:realazy 来源:realazy 时间:2008-07-10 12:00:00 

很多年以前,面对上古时代遗留的 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 不仅是一门技术,更是一门艺术。你会了解的,在读了本书之后。在此我很严肃地说。仅以此献给中国所有的页面仔,共勉。

标签:html,网页,W3C,标准
0
投稿

猜你喜欢

  • 用于分页的两个Asp函数

    2007-09-07 10:09:00
  • Linux系统下导出ORACLE数据库出现Exporting questionable statistics.错误 处理

    2010-07-16 13:27:00
  • Mootools 1.2教程(10)——Fx.Tween的使用

    2008-12-02 18:03:00
  • Javascript优化五大原则

    2007-10-30 13:49:00
  • 银行账号输入格式化, 支持部分浏缆器

    2007-09-26 18:27:00
  • 新云4.0 模板通用标签说明

    2008-11-20 13:12:00
  • asp实现非大小写的替换函数

    2010-05-19 21:23:00
  • “您无权查看该网页”的原因和解决方法

    2008-03-24 16:57:00
  • SQL Server密码管理的六个危险判断

    2008-10-23 13:57:00
  • REPAIR TABLE语法介绍——MySQL数据库

    2012-01-05 19:08:59
  • 如何解决从文本文件中调出记录出现丢失换行的问题?

    2009-12-03 20:25:00
  • Mysql入门系列:MYSQL日志文件维护

    2008-11-24 13:10:00
  • JavaScript框架比较:DOM遍历

    2010-04-23 14:41:00
  • 修炼设计能力的土办法

    2008-07-16 10:34:00
  • FckEditor配置手册中文教程详细说明

    2010-02-28 12:37:00
  • 网页推广设计的几个要点

    2011-01-10 20:41:00
  • 模拟兼容性的 addDOMLoadEvent 事件

    2009-07-31 12:37:00
  • 搜索结果页(SERP)之:不要被F型浏览忽悠了

    2009-09-07 12:34:00
  • asp如何用SA-FileUp上传多个文件?

    2010-06-13 14:34:00
  • Windows下对MySQL安装的故障诊断与排除

    2008-12-17 16:50:00
  • asp之家 网络编程 m.aspxhome.com