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
投稿

猜你喜欢

  • python语言是免费还是收费的?

    2021-12-30 10:04:48
  • php+mysql开发的最简单在线题库(在线做题系统)完整案例

    2023-08-21 20:03:14
  • python自动提取文本中的时间(包含中文日期)

    2023-08-22 21:32:11
  • 使用Flask-Cache缓存实现给Flask提速的方法详解

    2022-11-12 23:06:03
  • python 实现一个反向单位矩阵示例

    2023-07-27 16:05:51
  • Python实现一键抠图的示例代码

    2022-01-31 10:15:49
  • vue-cli 环境变量 process.env的使用及说明

    2024-05-29 22:28:45
  • 将ASP记录集输出成n列的表格形式显示的方法

    2011-04-08 10:51:00
  • asp 关键词高亮显示(不区分大小写)

    2011-04-07 10:55:00
  • python出现RuntimeError错误问题及解决

    2022-01-01 00:58:08
  • Quickwork For Asp -实战之后台管理

    2009-12-31 19:13:00
  • GoFrame通用类型变量gvar与interface基本使用对比

    2024-04-27 15:26:26
  • sql server编写archive通用模板脚本实现自动分批删除数据

    2024-01-18 03:27:11
  • python使用requests.session模拟登录

    2022-09-12 19:17:24
  • 使用python3 实现插入数据到mysql

    2024-01-15 07:53:22
  • 深入浅析ImageMagick命令执行漏洞

    2022-07-21 11:50:46
  • Oracle数据表中的死锁情况解决方法

    2024-01-15 11:23:01
  • Django drf分页器的使用详解

    2022-04-09 08:23:35
  • Python如何生成树形图案

    2022-11-17 03:39:58
  • Python+Pygame实战之疯狂吃水果游戏的实现

    2021-09-17 11:37:58
  • asp之家 网络编程 m.aspxhome.com