日期:2014-05-16 浏览次数:20398 次
前言:
?
??1、文章尾部带有原文的链接和来自zhangxinxu的翻译文章。
??2、本文只是节选了部分更直接性的言论,去除了一些“无关的”言论。
??3、只是个人学习+练习英语的topic
??4、为了方便大家学习,加上了尾部部分单词的意思
?
?
正文:
?
?
?? ? ? ? 可维护的代码意味着如下:
?
?? ? ? ? ? ? 1、可读的
?? ? ? ? ? ? 2、一致的
?? ? ? ? ? ? 3、可预见的
?? ? ? ? ? ? 4、看起来出自同一个之手写的
?? ? ? ? ? ? 5、有记录的 ? ? ? ? ? ?
?
?
myglobal = "hello"; //不推荐的方式 console.log(myglobal ); //"hello" console.log(window.myglobal ); //"hello" console.log(window["myglobal"] ); //"hello" console.log(this.myglobal); //"hello"?
?
?
?
function sum(x,y){ //不推荐的写法:隐式的全局变量 result = x +y; return result; }
?
?? 这段代码中,result在使用的过程中没有被声明,代码正常工作,但是在函数调用之后在全局空间就多了一个变量result,这恰恰是问题的根源。
?
经验往往告诉我们始终使用var来声明变量,正如改进版的sum()函数展示的:
?
?
function sum(x,y){ var result = x+y; return result; }?
?
var adam = new Person();
?
?? ?因为构造函数还也只是函数,仅仅看函数名可以帮助告诉你这个是不是一个构造函数还是一个正常的函数。 ?
?
?? ?以首字母大写来命名构造函数具有暗示作用。使用小写命名的函数和方法意味着不应该使用new调用。
?
?
function MyConstructor(){...}
function myFunction(){...}
?
?
?? ?你可以通过类似于下面的模式的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:确保总有健全的结果,技术无情况匹配的时候。
?
?
?
?
var zero = 0; if(zero === false){ //没有执行,因为zero是0不是false } if(zero == false){ //执行了 }