`
zhangyaochun
  • 浏览: 2620707 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

书写高质量JavaScript代码的要点(The Essentials of Writing High Quality JavaScript)翻译

阅读更多

前言

 

  1、文章尾部带有原文的链接和来自zhangxinxu的翻译文章。

  2、本文只是节选了部分更直接性的言论,去除了一些“无关的”言论。

  3、只是个人学习+练习英语的topic

  4、为了方便大家学习,加上了尾部部分单词的意思

 

 

正文

 

 

  • 书写可维护的代码 (Writing Maintainable Code)

         可维护的代码意味着如下:

 

             1、可读的

             2、一致的

             3、可预见的

             4、看起来出自同一个之手写的

             5、有记录的            

 

 

  • 最小化全局变量(Minimizing Globals)
    JavaScript用函数来管理作用域。在函数内部声明的变量只在函数内部,函数外部不可用。在另一方面,全局变量是在任何函数外部声明或没有声明直接使用。

    当你在任意函数的外部使用this的时候,你可以访问到每一个JavaScript环境的全局对象。每一个你创建的全局变量都会变成全局对象的一个属性。在浏览器中,为了方便,全局对象有一个附加的属性被称为window,它指向全局对象本身。

    下面的代码片段展示了在浏览器环境中如何创建和访问全局对象

myglobal = "hello";   //不推荐的方式
console.log(myglobal );  //"hello"
console.log(window.myglobal ); //"hello"
console.log(window["myglobal"] ); //"hello"
console.log(this.myglobal); //"hello"
 

 

  • 全局变量的问题(The Problem with Globals)
     全局变量的问题在于,你的JavaScript应用程序或者web页面上所有的代码都能共享它们。它们存在于同一个全局的命名空间中,很容易出现命名冲突---当两个不同部分的应用程序定义的同名但是不同作用的全局变量。

同样,在web页面很常见的引入的代码二不是这个页面开发者写的,比如:

            1、第3方的JavaScript的脚本库
            2、来自广告方的脚本
            3、一个第3方用户追踪和分析的脚本代码
            4、各种组件,标志和按钮

 

 

function sum(x,y){
   //不推荐的写法:隐式的全局变量
   result = x +y;
   return result;
}

 

   这段代码中,result在使用的过程中没有被声明,代码正常工作,但是在函数调用之后在全局空间就多了一个变量result,这恰恰是问题的根源。

 

经验往往告诉我们始终使用var来声明变量,正如改进版的sum()函数展示的:

 

 

function sum(x,y){
   var result = x+y;
   return result;
}
 

 

  • 构造函数首字母大写(Capitalizing Constructors)
    JavaScript没有类但是有new调用的构造函数

var adam = new Person();

 

    因为构造函数还也只是函数,仅仅看函数名可以帮助告诉你这个是不是一个构造函数还是一个正常的函数。  

 

    以首字母大写来命名构造函数具有暗示作用。使用小写命名的函数和方法意味着不应该使用new调用

 

 

function MyConstructor(){...}
function myFunction(){...}

 

 

  • switch 形式(switch Pattern)

    你可以通过类似于下面的模式的switch语句增强可读性健壮性。 

 

 

var inspect_me = 0,
      result = '';
switch(inspect_me ){
case 0:
      result ='zero';
      break;
case 1:
      result ='one';
      break;
default:
      result = 'unknow';
}

 

这个简单的例子遵循的风格如下:

 

   1、每一个case与switch对齐(花括号缩进规则除外)

   2、每一个case中代码缩进

   3、每一个case以break结束

   4、避免贯穿(当你故意忽略break)。如果你确信贯穿是最好的办法, 确信记录这些情况,因为对于你代码的一些阅读         者来说,它可能看起来是错误的。

   5、以default结束switch:确保总有健全的结果,技术无情况匹配的时候。

 

 

 

 

  • 避免隐式类型转换(Avoiding Implied Typecasting)
var zero = 0;
if(zero === false){
    //没有执行,因为zero是0不是false
}

if(zero == false){
   //执行了
}
  
     还有一种观点认为 == 就够了 ====是多余的。比如,当你用typeof的时候,你知道它返回一个字符串,所以没有使用严格相等的理由。但是,JSLint 要求严格相等,这样使代码看起来一致性而且降低阅读代码的成本(‘==’是故意的还是一个疏漏?)

  • parseInt()下的数值转换(Number Conversions with parseInt())
     用parseInt()你可以将字符串转换为数值。这个方法接受另一个基数参数,它经常被省略但这不应该。当字符串以“0”开头的时候,就会有问题。比如,部分时间进入表单域,在ECMAScript3,以“0”开头的字符串内当做8进制处理,但在ECMAScript5中改变了。为了避免矛盾和以外的结果,总是指定基数参数。

 

var month = "06",
      year    = "09";
month = parseInt(month,10); //6
year = parseInt(year,10);    //9
 

 

 

 

+ "08";  //8
Number("08");  //8  typeof ==  number

 

     这些通常快于parseInt(),因为parseInt()方法,顾名思义,解析转换不是那么简单的。但是如果你想输入“08 hello”这样的,parseInt()将会返回一个数字,而其他返回NaN.

 

 

parseInt("08 hello");  //0
+"08 hello";  //NaN
Number("08 hello");  /NaN
 

 

 

部分原文的单词翻译

 

1、maintainable -------可维持的,主张的

2、consistent     -------一致的

3、predictable    ------可预见的

4、snippet          -----片段

5、convenience  -----方便

6、variable         -----可变化的,变量

7、declare          -----声明,宣布

8、invoke           -----调用

9、hint               -----暗示

10、indicate      -----意味着

11、robustness ----健壮性

12、sane           ----健全的

13、approach    ----方法

14、indent         ----缩进

15、robust         ----健全的

16、imply           ----暗指

17、conversion  ----转换

 

扩展阅读

 

1、http://net.tutsplus.com/tutorials/javascript-ajax/the-essentials-of-writing-high-quality-javascript/

 

2、http://www.zhangxinxu.com/wordpress/?p=1173

3
0
分享到:
评论

相关推荐

    The Essentials of Interaction Design

    The Art of Software Architecture—Design Methods and Techniques Introduction Chapter 1 - Introduction to Software Architecture Chapter 2 - The Software Product Life Cycle Chapter 3 - The ...

    The_Essentials_Of_Computer_Organization_And_Architecture__2003_.chm

    《计算机组成原理与系统结构》,经典教材,chm版本 难得啊

    Essentials of Business Communication.pdf

    ESSENTIALS OF BUSINESS COMMUNICATION, 9TH EDITION presents a streamlined approach to business communication that includes unparalleled resources and author support. ESSENTIALS OF BUSINESS ...

    JavaScript基础JavaScript Essentials

    提供详细而全面但易于遵循的使用JavaScript开发强大,动态网页的指南。

    JavaScript and JSON Essentials

    JSON是一种基于文本的轻量级代码,用于创建对象并便于在互联网上传输数据,它的语法是JavaScript的一个子集,且自1999年标准化以来,它易于人类阅读,无需像XML那样的标记。 《JavaScript与JSON实用指南》是一本...

    英文原版-Essentials of Rubins Pathology 6th Edition

    Essentials of Rubin's Pathology, Sixth Edition, is a condensed version of the main title, Rubin's Pathology, 6e. Targeted to students in allied health fields, including dentistry, nursing, physical ...

    JS超级名著《Essentials of Javascript》

    综上所述,《Essentials of Javascript》涵盖了JavaScript及其生态系统的各个方面,从基础语法到高级框架,从客户端应用到服务器端编程。这本书不仅适合初学者学习JavaScript的基础知识,也适合经验丰富的开发者深入...

    Coding Theory The Essentials

    Coding Theory The Essentials

    The Essentials of Risk Management, 2nd Edition.pdf

    - **社会与环境因素**:日益增长的社会责任感和环境保护意识也对企业风险管理提出了更高要求。 综上所述,《风险管理基础(第二版)》这本书不仅提供了风险管理的基本概念和理论框架,还深入讨论了风险管理在不同...

    Essentials of Programming in Mathematica azw3

    Essentials of Programming in Mathematica 英文azw3 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    The Essentials Of Finance And Accounting For Nonfinancial Managers

    通过对业务单元进行详细的财务分析,非财务经理可以确定哪些产品或服务最赚钱,哪些成本过高需要削减。这种分析通常涉及到收入、成本、边际贡献等关键指标的计算,为管理层提供决策支持。 ##### 10. 投资回报率 ...

    Essentials of Stochastic Processes课后习题答案

    根据提供的文件信息,以下是对《Essentials of Stochastic Processes》课后习题答案中知识点的详细总结。 首先,文档开头提到的版权信息和注意事项,表明此答案册子是针对Rick Durrett的《Essentials of Stochastic...

    Essentials of Software Engineering 3rd Edition

    In-depth coverage of key issues, combined with a strong focus on software quality, makes Essentials of Software Engineering, Third Edition the perfect text for students entering the fast-growing and ...

    ESSENTIALS OF ROBUST CONTROL

    ESSENTIALS OF ROBUST CONTROL,英文好书!

    Essentials of Programming Languages, 3rd Edition

    这种从高到低的抽象层次的讲解方式,有助于读者在不丢失重要概念的同时,能够更全面地理解编程语言的不同方面。 此外,书中包含了大量练习。这些练习不仅帮助解释关键概念,还允许学生探索其他设计方案和其他问题。...

    Essentials of Economics, 6e

    Essentials of Economics, 6e

Global site tag (gtag.js) - Google Analytics