前言:
?
??1、文章尾部带有原文的链接和来自zhangxinxu的翻译文章。
??2、本文只是节选了部分更直接性的言论,去除了一些“无关的”言论。
??3、只是个人学习+练习英语的topic
??4、为了方便大家学习,加上了尾部部分单词的意思
?
?
正文:
?
?
- 书写可维护的代码 (Writing Maintainable Code)
?? ? ? ? 可维护的代码意味着如下:
?
?? ? ? ? ? ? 1、可读的
?? ? ? ? ? ? 2、一致的
?? ? ? ? ? ? 3、可预见的
?? ? ? ? ? ? 4、看起来出自同一个之手写的
?? ? ? ? ? ? 5、有记录的 ? ? ? ? ? ?
?
?
- 最小化全局变量(Minimizing Globals)
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)
?
?
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)
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){ //执行了 }
- parseInt()下的数值转换(Number Conversions with parseInt())
?
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