[译]Javascript风格要素(一)
作者:秦歌 来源:随网之舞 发布时间:2008-02-28 12:58:00
程序设计是困难的,其核心是管理的复杂性。计算机程序是人类做出的最复杂的东西。质量是不可靠的且隐蔽的。
好的体系架构是必需给程序足够的结构使其健壮而不会陷入混乱的泥淖,但我们表达一个程序细节的方式是同等重要的。一个程序的本质会被不良的编码所隐藏。只有当一个程序的表达清晰时,我们才能有希望正确的推理出它的效率、安全和正确性。
William Strunk的《风格要素》(The Elements of Style)是关于文学风格的经典著作,它是一本关于英文写作的薄手册,在用法、组织和形式上提出忠告。风格的理念应用于编程,在1972年Kreitzberg和Shneiderman的《FORTRAN风格要素》(The Elements of FORTRAN Style)中是不成功的,但在1978年的Kernighan和Plauger的《编程风格要素》(The Elements of Programming Style)中是非常成功的:
好的编程不能通过笼统的说教。学习编程的好方法是一次又一次的思考:真正的编程是如何通过一些良好实践的原则和一点常识来进行改进的。
他们从他们批评和改进的其他的编程教科书中筛选程序。
当我们在这里谈论风格时,我们谈论的不是潮流或者时尚,也不是CSS、布局惯例或排版。我们正在谈论的是能真正提高代码价值的表达式的永恒品质。对于公司来说,他们的评估和他们的代码是息息相关的,风格应该是一个至关重要的受关注内容。
我们使用许多编程语言,但在某一方面,Javascript是最重要的,它是浏览器的语言。当人们访问我们的站点时,他们将邀请我们的Javascript程序在他们的机器中执行。我们有义务使那些程序执行好。
没有好的关于Javascript编程的课本。在网页使用Javascript的大多数人学习它是通过从糟糕的书、糟糕的站点和糟糕的工具中复制相当糟糕的例子。我们这里有极好的Javascript程序员社区,但我们依旧能从较好的风格实践中获益。
为了证明这个问题,我将从公共网站中抽取一些程序,展示它们如何能被改进。这并不是我有意为难任何人。我的意图仅是通过例子展示风格的价值。我不会保留任何秘密:我展示给你的是我们已经传送给世界上的每一个人。
淘汰过时结构
下面的例子是2005-09-19摘自www.yahoo.com:
<script language=javascript><!--
lck='',
sss=1127143538,
ylp='p.gif?t=1127143538&_ylp=A0Je5ipy2C5D54AAwVX1cSkA',
_lcs='';
--></script>
这个脚本块用了language属性。这个特性是微软为了支持VBScript引入的。然而Netscape采用它是为了支持非标准偏差。W3C不采取这个language属性,倾向使用MIME类型的type属性取代。不幸的是,MIME类型未得到标准化,所以它有时是”text/javascript”、”application/ecmascript”或其他。幸运的是所有的浏览器都选择Javascript作为默认的编程语言,所以简单的写<script>是最好的。它最小,且工作在最多的浏览器。在脚本中使用HTML的注释的时间要回溯到Netscape Navigator和Netscape Navigator 2的兼容问题上来。后者引入了<script>标签。然而,前者的用户能像文本一样看到脚本,因为在HTML惯例中不能识别的标签被忽略。<!–注释hack在Netscape Navigator 3出现的时候是需要的,现在它不被需要了。它是丑陋的且浪费空间的。
逗号运算符像Javascript语法的大多数一样从C语言中借用。逗号运算符获得两个值,且返回第二个。在语言的定义中它的存在易于掩盖一定的编码错误,编译器也易于对一些错误视而不见。最好避免逗号运算符,并以分号运算符代替。
在这个案例里,我们定义了一些全局变量。当指定一个未知(匿名)的变量时,Javascript会创建一个新的全局变量来替代产生的错误。事后看来,这是一个错误。即使当他们是一个标准错误,这是避免错误的最好办法。我们应该明确的声明变量。它花费我们四个字符,但是它正是要做的正确的事。
<script>
var lck = '3ek6b0i2he2a5eh3/o',
sss = 1126894256,
ylp = 'p.gif?t=1126894256&_ylp=A0Je5iOwCitDw2YBX331cSkA',
_lcs = '94040';
</script>
从上面我们能得出这样的原则:淘汰过时结构


猜你喜欢
- 我们通常会使用 apt-get或者是pip来安装包,但是这两者的安装路径是不一样的,区别如下:如果使用pip或者pip3安装,则第三方包在:
- 1.微博三方登录流程1.1 前端获取认证code1.在Vue页面加载时 动态发送请求获取微博授权url2.django收到请求的url后,通
- 如下所示:<?phpnamespace helpers;class OpensslRSA{ //echo $private_key 私
- 摘要在机器视觉中,对于图像的处理有时候因为放置的原因导致ROI区域倾斜,这个时候我们会想办法把它纠正为正确的角度视角来,方便下一步的布局分析
- 分享一个sql数据库面试题。问题:表 table1,主键为 ID,ID为自动编号(ID可能不连续),要求查询第31-40行记录,请问SQL语
- provide和inject的用法(vue组件爷孙传值)聊聊概念成对出现:provide和inject是成对出现的作用:用于父组件向子孙组件
- 通常说到外键,只会提到“外键的目的是确定资料的参考完整性(referential integrity)。”,但是外键具体包含哪些动作和含义呢
- 即将上线的百度C2C平台百度“有啊”开始对百度HI用户进行邀请,其首页页面、“有啊”LOGO也首次曝光。从曝光的图片看,百度“有啊”的主色调
- 经常看到有新手问PHP有没有类似asp的left函数或right函数,实现截取某字符串左边或右边开始N个字符的函数。答案当然是有的。PHP中
- 第一招、mysql服务的启动和停止net stop mysqlnet start mysql第二招、登陆mysql语法如下: mysql -
- 以前在使用Python的时候,都是使用root用户安装好的全局python,现在,因为root用户安装的Python版本太低,同时自己没有r
- Python产生一个数值范围内的不重复的随机数,可以使用random模块中的random.sample函数,其用法如下:import ran
- 搭建lnmp完lnmp环境后,测试时出现502报错,看到这个问题,我立刻想到是php-fpm没有起来,但是我用 ps -ef | grep
- 众所周知,在设计爬虫时,最麻烦的一步就是对网页元素进行分析,目前流行的网页元素获取的工具有BeautifulSoup,lxml等
- 一、自动化测试的概念性能系统负载能力稳定性过载操作下的系统瓶颈自动化测试,使用程序代替人工,可以提高测试效率性,自动化测试能自动化使用代码模
- 实这本是说明一个问题 : 每个人在提高自己能力这件事情上, 需要持续不断地努力。以最典型的例子来看,只有通过学习,程序员才能保证不断进步。
- 目录项目地址所用到的技术开始编写爬虫项目地址https://github.com/aliyoge/fund_crawler_py所用到的技术
- 本文实例讲述了PHP+Ajax实现无刷新分页的方法。分享给大家供大家参考,具体如下:注:这里使用到的一些类库在前面文章都能找到源代码,因此为
- Sublime Text 3纯文本编辑器Package Control(Sublime的包管理器)Sublime Text3中的插件,通过该
- 官方文档中关于super的定义说的不是很多,大致意思是返回一个代理对象让你能够调用一些继承过来的方法,查找的机制遵循mro规则,最常用的情况