如何重构这段代码?

时间:2016-09-17 10:26:45

标签: javascript refactoring

最近我开始学习重构代码。我该如何重构这段代码。我可以从哪里开始?

 - (void)userNotificationCenter:(UNUserNotificationCenter *)center  
willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler{  
NSLog( @"for handling push in foreground" );  
// Your code
NSLog(@"%@", notification.request.content.userInfo); //for getting response payload data
}  

- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response  withCompletionHandler:(void (^)())completionHandler   {  
NSLog( @"for handling push in background" );  
// Your code
NSLog(@"%@", notification.request.content.userInfo); //for getting response payload data 
} 

2 个答案:

答案 0 :(得分:0)

您似乎正在尝试在对象列表中找到name属性中的最大(最高)数字。
使用以下优化方法:

var activeNumber = [
  {name: 'no 1'},
  {name: 'no 2'},
  {name: 'no 11'},
  {name: 'no 3'},
  {name: 'no 10'}
];

var getMaxNumber = function(arr) {
  var top = 0, items = [];
  if (Array.isArray(arr) && arr.length === 0) return top;

  arr.forEach(function(o) {
    num = o.name.match(/\d+/);   // finds matches for a number in 'name' property
    if (num) items.push(num);
  });

  return Math.max.apply(null, items);   // gets the maximum value of the list
}

console.log(getMaxNumber(activeNumber));

答案 1 :(得分:0)

var getCustomerNumber = function (custNumber) {
    var present = numberRe.exec(custNumber);
    if (present) {
        return parseInt(present[0]);
    }
    return -1;
};

var getAllCustomerNumbers = function (customers) {
    var top = 0;
    for (var i = 0; i < customers.length; i++) {
        var neno = getCustomerNumber(customers[i].name);
        if (!isNaN(neno) && neno > top) {
            top = neno;
        }
    }
    return top;
};

我希望我没有做错任何事。

一个简单的规则是创建仅执行一项操作的代码片段。在上面的例子中,一个函数负责从带有正则表达式的字符串中提取数字,即getCustomerNumber,另一个函数负责迭代多个客户并提取他们的数字。

此外,在这种情况下customerscustNumber传递函数的所有依赖项作为参数非常有用,原因是您可以使代码可测试(特别是单元可测试的)因为你传递了它需要运行的所有东西。