2014年11月16日

[知乎]老是听说hard coded但是一直没弄明白,能给解释下么?

作者 zhuangbiaowei
var a=1;
var b=2;
console.log(a+b);

当然,这样你就能够得到一个输出:3

console.log(1+2);

这样,其实也能得到一个输出:3

这两段代码,其实都能够得到同样的输出结果,为什么要多两个代码,定义两个变量呢?

第一个原因:如果你打算计算3+4,前一种代码,你可以仅仅修改变量的定义;第二种代码,就要修改console.log里的数字。

再者,如果我们想做一个加法的函数,就必须要用到变量:

function add(a,b){
  console.log(a+b);
}
add(1,2);

这就显示出了第二个原因:有些功能,不用变量,根本无法实现。

如果我们想要连接数据库,通常会写:

var config = load_config();
var db = DB.connect(config);

这就显示出了第三个原因,各种配置类的数据,根本就不是代码,也不该写在代码里。

如果我们的程序,有很多的逻辑判断,可以写成这样:

const CONDITION1 = 1;
const CONDITION2 = 2;

if(input_data==CONDITION1){
  do_something1();
} else if(input_data==CONDITION2){
  do_something2();
} else {
  do_something3();
}

如果我们将各种条件的具体值都写在if判断之中,那就太死板了,阅读起来也会难以理解1,2,3分别代表什么含义。这就显示了第四个原因,在显著位置,集中解释(或展示)代码逻辑,而不是在代码中混乱的分布。

基本上,以上的几个原因,告诉我们,不应该写hard code。