最近我开始学习重构代码。我该如何重构这段代码。我可以从哪里开始?
- (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
}
答案 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
,另一个函数负责迭代多个客户并提取他们的数字。
此外,在这种情况下customers
或custNumber
传递函数的所有依赖项作为参数非常有用,原因是您可以使代码可测试(特别是单元可测试的)因为你传递了它需要运行的所有东西。