如何降低这段代码的圈复杂度
How can I reduce cyclomatic complexity from this piece of code?
我正在重构一些遗留代码。我从jshint那里得到了关于圈复杂性的错误,我正试图找出如何修复警告。代码在node.js中,所以任何使用JavaScript的东西都非常受欢迎。
if (rawObj.title) {
formattedObj.name = rawObj.title;
}
if (rawObj.urls && rawObj.urls.web) {
formattedObj.url = rawObj.urls.web.project;
}
if (rawObj.photo) {
formattedObj.image = rawObj.photo.thumb;
}
if (rawObj.category) {
formattedObj.category = rawObj.category.name;
}
它实际上只是检查属性是否存在并映射到一个新对象。
派对有点晚了,但你(或其他正在寻找降低圈复杂度的方法的人)可以采用这样的方法。这有点像战略模式。根据您是否可以使用ES6,将决定您应该使用哪个setRawObjProp
。
function setFormObjName () {
formattedObj.name = rawObj.title;
console.log(arguments.callee.name,formattedObj);
}
function setFormObjURL () {
formattedObj.url = rawObj.urls.web.project;
console.log(arguments.callee.name,formattedObj);
}
function setFormObjImage () {
formattedObj.image = rawObj.photo.thumb;
console.log(arguments.callee.name,formattedObj);
}
function setFormObjCat () {
formattedObj.category = rawObj.category.name;
console.log(arguments.callee.name,formattedObj);
}
function setRawObjProp(obj) {
var objectMap = new Map();
objectMap
.set('string1', setFormObjName)
.set('string2', setFormObjURL)
.set('string3', setFormObjImage)
.set('string4', setFormObjCat);
if (objectMap.has(obj)) {
return objectMap.get(obj)();
}
else {
console.log('error', obj);
}
}
/*
function setRawObjProp2(obj) {
var objectMap = {
'string1': setFormObjName,
'string2': setFormObjURL,
'string3': setFormObjImage,
'string4': setFormObjCat,
};
if (objectMap.hasOwnProperty(obj)) {
return objectMap.get(obj)();
}
else {
console.log('error', obj);
}
}
*/
var rawObj = {
title: 'string1',
urls: {
app: {
project: 'some thing'
},
web: {
project: 'string2'
}
},
photo: {
large: 'large',
thumb: 'string3'
},
category: {
name: 'string4',
type: 'some type',
id: 12345
}
},
formattedObj = {
title: '',
urls: {
web: {
project: ''
}
},
photo: {
thumb: ''
},
category: {
name: ''
}
};
setRawObjProp('string1');
/* setRawObjProp2('string1') */
相关文章:
- 您有更好的动态方式来缩短复杂的代码jquery吗
- JavaScript 访问对象属性的运行时复杂度 O(?) 是多少?
- 对庞大而复杂的代码进行去混淆
- 圈复杂度路径很重要
- 使用 Javascript 将 HTML 标记动态替换为更复杂的代码
- javascript的array.indexOf的时间复杂度是多少?
- HTML DOM 查找的时间复杂度是多少?
- 如何降低这段代码的圈复杂度
- 我该如何降低圈复杂度
- 这个算法的时间复杂度是多少
- 解释复杂的代码正则表达式
- JavaScript中parseInt()的时间复杂度是多少?
- JavaScript's array.length的时间复杂度
- 这个NumberComplement函数的时间复杂度是多少?
- 不能使用复杂度度量定义更好的算法
- Javascript检查交集降低了计算复杂度
- JS提示-这个函数的圈复杂度&不要在循环中创建函数
- 排序算法的时间复杂度应该是多少
- Node.js发射器的时间复杂度/效率.removeListener(事件侦听器)
- 逻辑相似代码的圈复杂度