Могу ли я сделать рефакторинг, чтобы не использовать вызовы методов?
Допустим, у меня есть эти методы:
+(CCSprite *)a {
return [self shapeFromRect:CGRectMake(0, 224, 224, 288) rotate:0];
}
+(CCSprite *)b {
return [self shapeFromRect:CGRectMake(0, 224, 224, 288) rotate:0];
}
+(CCSprite *)c {
return [self shapeFromRect:CGRectMake(0, 100, 50, 50) rotate:0];
}
+(CCSprite *)d {
return [self shapeFromRect:CGRectMake(0, 100, 50, 50) rotate:90];
}
Существует избыточность, поэтому я мог бы изменить ее следующим образом:
+(CCSprite *)a {
return [self shapeFromRect:[self abRect] rotate:0];
}
+(CCSprite *)b {
return [self shapeFromRect:[self abRect] rotate:0];
}
+(CCSprite *)c {
return [self shapeFromRect:[self cdRect] rotate:0];
}
+(CCSprite *)d {
return [self shapeFromRect:[self cdRect] rotate:90];
}
+(CGRect)abRect {
return CGRectMake(0, 224, 224, 288);
}
+(CGRect)cdRect {
return CGRectMake(0, 100, 50, 50);
}
Но мне интересно, есть ли более эффективный способ сделать это?
Есть ли способ, которым я мог бы сохранить эти CGRects в перечислении typedef или другой форме константы, чтобы мне не приходилось выполнять вызовы методов?
1 ответ
+ (CCSprite *)sprite:(NSInteger)type
{
float r = (type == 3)? 90 : 0;
if (type < 2) {
return [self shapeFromRect:CGRectMake(0, 224, 224, 288)] rotate:r];
} else {
return [self shapeFromRect:CGRectMake(0, 100, 50, 50)] rotate:r];
}
}
может быть что-то похожее на это?