gpt4 book ai didi

Objective-c 重构,代码归属于哪里?

转载 作者:行者123 更新时间:2023-12-01 17:58:04 28 4
gpt4 key购买 nike

我正在开发一个用于 Web 服务的 iOS 客户端,我从一个 Json API 获取数据,我解析并保存到 CoreData 中。我有一些重复,主要是我如何解析和保存对象。一个例子是一种创建用户的方法,它在两个 Controller 中几乎相同(将来可能会更多):

- (User *)createUserFromDict:(NSDictionary *)dictionary
{

User *user;

NSNumberFormatter *numberFormatter= [[NSNumberFormatter alloc] init];
NSNumber * userId = [numberFormatter numberFromString:(NSString *)[dictionary valueForKey:@"id"]];
NSEntityDescription *userDescription = [NSEntityDescription entityForName:@"User" inManagedObjectContext:[appController managedObjectContext]];
NSEntityDescription *imageDescription = [NSEntityDescription entityForName:@"Image" inManagedObjectContext:[appController managedObjectContext]];

user = [[User alloc] initWithEntity:userDescription insertIntoManagedObjectContext:[appController managedObjectContext]];
user.name = [dictionary valueForKey:@"name"];
[...]

Image *userAvatrar = [[Image alloc] initWithEntity:imageDescription insertIntoManagedObjectContext:[appController managedObjectContext]];
userAvatrar.url = [dictionary valueForKeyPath:@"avatar_image.url"];
[...]
NSError *error;
[[appController managedObjectContext] save:&error];

return user;
}

我不确定这种重复是否必要,或者是否有更好的方法来做到这一点。我正在考虑创建一个“cacheManager” Controller 类并在此处存储这样的方法,或者将其放入我的模型中。哪种方法是最好/正确的方法?

最佳答案

DRY - Don't Repeat Yourself 原则不仅可以节省代码,更重要的是允许在一个地方而不是多个地方进行维护。

单一职责原则指出每个单元(类/方法)应该只做一件事。

从而消除重复代码。

一个类或方法是否取决于缓存的参与程度和 future 的需求。如果有意义的话,你可以慢慢地使用一个方法,然后再重构一个类。

如果使用它的两个 Controller 是单独的类,那么似乎一个新的类可能是继续的方式。

鉴于良好的命名约定,这也将使代码更易于遵循。

关于Objective-c 重构,代码归属于哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14112446/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com