魔术字符串指的是,在代码之中多次出现、与代码形成强耦合的某一种具体的字符串或数值。风格良好的代码,应该尽量消除魔术字符串,而由含义清晰的变量代替。
function getArea(shape, options) {
var area = 0;
switch (shape) {
case 'Triangle': // 魔术字符串
area = .5 * options.width * options.height;
break;
/* ... more code ... */
}
return area;
}
getArea('Triangle', {width: 100, height: 100}); // 魔术字符串
上面的代码中,字符串 ‘triangle’ 就是一个魔术字符串。它多次出现,与代码形成 “强耦合”,不利于将来的修改和维护。
常见的消除魔术字符串的方法,就是把它写成一个变量。