如何写出难看的代码(一)
这段代码用来生成 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};
之所以难看,是因为:
substr
仅仅为了去掉最后一个&
,这是完全可以避免的;- for 循环中的
+=
会占用更多的内存; - addAsk 实现得不够简洁。
全文完
- 文章ID:2651
- 原文作者:zrong
- 原文链接:https://blog.zengrong.net/post/how-to-write-ugly-code-1/
- 版权声明:本作品采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可,非商业转载请注明出处(原文作者,原文链接),商业转载请联系作者获得授权。