如何写出难看的代码(一)

这段代码用来生成 URI 中的查询字符串。

例如,有一个 object 的内容如下:

1var obj = {a:'1',b:'2'};
2console.log(makeParamsString(obj, true) === '?a=1&b=2');
3// true

好看的代码应该是怎么样的:

1var makeParamsString = function(obj, addAsk) {
2  let ret = [];
3  for (let d in obj) {
4     ret.push(encodeURIComponent(d) + '=' + encodeURIComponent(data[d]));
5  }
6  return (addAsk ? '?' : '') + ret.join('&');
7};

如果希望更好看点,也可以使用 URI.js 来做这件事。

难看的版本:

 1var makeParamsString = function(obj, addAsk) {
 2  var result = '';
 3
 4  if (addAsk){
 5    result += '?';
 6  } else {
 7    result += '&';
 8  }
 9
10  for(var i in obj){
11    result += i + '=' + obj[i] + '&';
12  }
13
14  result = result.substr(0, result.length-1);
15
16  return result;
17};

之所以难看,是因为:

  1. substr 仅仅为了去掉最后一个 & ,这是完全可以避免的;
  2. for 循环中的 += 会占用更多的内存;
  3. addAsk 实现得不够简洁。
全文完