关于html5的7个传说

justjavac 发表于 2012-04-05

正如 Opera 的布道者 Bruce Lawson 讲的那样,“每个人都在谈论 HTML5”,它被传的很神、很玄。

但简单地说,HTML5 就是以新的标准、语法和规则来创建网页,可以利用一些新的浏览器的“本地”功能,例如离线存储、多媒体播放和其他的交互等等。

我们看到的很多很酷的 HTML5 网站实际上跟 HTML5 无关,它们大多是由 CSS3 和 jQuery 生成的。CSS3 和 jQuery 是和 HTML5 一样的新技术,它们和 HTML5 是平行的概念。

可以说,HTML5 实际上只是古老的 DHTML 或者 Ajax,但是各种关于它的信息混在一起,就出现了一些错误的说法。这篇文章讲了关于 HTML5 的7个传说,其实也就是误解。

传说1:因为苹果不支持 Flash,所以人们发明了 HTML5

树大招风,苹果似乎经常受到各种指责。虽然 HTML5 可以为移动设备提供一些非常有用的功能,但是它不是为了这个需求而被创造的。

...

如何避免产生赋值语句

justjavac 发表于 2012-04-05

我在之前的文章里谈论过 赋值语句的危害性。 使用赋值语句会使程序变的冗长,更难理解。 但事实上,赋值语句对编程来说是一种基本语句,想限制它的使用几乎是不可能的。

幸运的是,我们实际上是能做到的,下面我就会向你展示如何去做。

用正确的方式初始化

// 错误 | // 正确 int x; | // ... | // ... x = init(); | int x = init();

“正确”方式的主要优点是你能很方便的浏览x的定义的同时知道它的值。 这样也能保证x始终处在一个固定变量状态,大多数的编译器都能检测到这种状态。 其次,这样可以使代码减少冗余。

“错误”方式之所以存在完全是因为很多老式的编程语言都强制要求在程序的开始处先声明变量。 这样编译器好处理。 但现在这已经不是问题了,即使在C语言里。

构造新数据

// 错误 | //...

你的编程语言能这样做吗?

justjavac 发表于 2012-04-05

一日,你查看你的程序代码,你有两大块代码看起来几乎完全的一样。

事实上它们就是完全一样,除了一个代码里说的是“Spaghetti(意大利面条)”, 另一个代码里说的是“Chocolate Moose(巧克力慕丝)”。

// 一个小例子: alert("I'd like some Spaghetti!"); alert("I'd like some Chocolate Moose!");

这个例子恰好是用Javascript写的,但即使是你不懂Javascript,你也应该能看懂我说的。

当然,重复的代码看起来不太好。

所以你决定写一个函数:

function SwedishChef( food ) { alert("I'd like some " + food + "!"); } SwedishChef("Spaghetti"); SwedishChef("Chocolate Moose");

没错,这个例子很简单,但你可以想出一些更有实际价值的例子。 这样做是更好一些,有很多理由,这些理由估计你都听说过一万遍了。 可维护性,可读性,抽象 = 好!

...

当心那些有歧义的命名

justjavac 发表于 2012-04-05

关键点

“别人还能把这个名字理解成什么意思?”通过不断的问自己这个问题来积极检查每一个命名。

事实上,这种富有创造性的、不断尝试“错误理解”的方法,能够有效的发现歧义的命名, 并修正它们。正如本文中的示例,我们将随时通过“骑驴看唱本 ——边走边瞧”的方式来 探讨所见到名字的误解之处, 然后选取一个更好的名字。

示例:Filter()

假设写了一段代码来操作数据库结果的集合:

results = Database.all_objects.filter("year <= 2011")

那么,results包含什么数据呢?

  • 所有满足year<=2011的对象
  • 所有满足year<=2011的对象

问题的由来是从filter这个有歧义的词开始的,它没有清楚表达它的意思是“选取”还是“剔除”。 因此,应该避免使用filter,它太容易造 成误解! 如果这里想要的效果是“选取”,一个更好的名字是select;如果想要的是“剔除”,更好的名字则是exclude。

为布尔值取名

当为布尔值变量命名或者函数返回布尔值的时候, 要特别注意真和假所表达出来的真实意思, 这里就有一个很危险的例子:

bool read_password = true;

这句代码意思取决于当时怎么阅读的(没有其他的意思了),显然这里有两种截然不同的理解:

* 需要读密码 * 密码已经被读过了

在这个用例下,做好避免用单词read,可以考虑使用need_password或者user_is_authenticated来代替。

通常情况下,添加单词is、has、can或者should可以让布尔值的意思更加清晰易懂。

...

避免常见的六种HTML5错误用法

justjavac 发表于 2012-04-05

原文链接请点击 此处, 作者为Richard Clark.

本文为原创翻译,同时对原文做了一些简化处理。 本文遵循 署名-非商业性使用协议

一、不要使用section作为div的替代品

人们在标签使用中最常见到的错误之一就是随意将HTML5的<section>等价于<div>——具体地说, 就是直接用作替代品(用于样式)。

在XHTML或者HTML4中,我们常看到这样的代码:

<!-- HTML 4-style code --> <div id="wrapper"> <div id="header"> <h1>My super duper page</h1> <!-- Header content --> </div> <div id="main"> <!-- Page content --> </div>...