我的团队发现我们在代码库中使用了各种
我们想到的一个方法是在
我对这种方法的问题之一是我们目前没有“保护”
因为我们在内部使用它,所以我不太担心团队误用这个功能的风险(即它是一个小团队,并且有清晰的注释)。
然而,我想知道这里的最佳实践。
有办法返回一个不可变的日期格式化程序的引用吗?如果我返回格式化程序的副本,那是否比我们现在执行的分配/初始化操作更便宜?
还有其他方法吗?
我们将使用这个并运行,但编写“更好”的代码时获得一些反馈总是很好的。
NSDateFormatter
对象,并开始研究如何避免在许多不同的地方分配/初始化常见格式化程序的成本和混乱。我们想到的一个方法是在
NSDateFormatter
类上创建一个类别,该类别将提供对常规配置格式化程序的静态实例的引用。例如,我们在几个地方使用“短时间”日期格式化程序,并且正在寻找添加以下类方法:@implementation NSDateFormatter (NSDateFormatter_PDDateFormatters)
static NSDateFormatter * shortTimeFormatter = nil;
+ (NSDateFormatter *) PDSharedShortTimeFormatter {
@synchronized([NSDateFormatter class]){
if( shortTimeFormatter == nil){
// Create new formatter for SHORT times (e.g. 12:00 pm)
shortTimeFormatter = [[NSDateFormatter alloc] init];
[shortTimeFormatter setDateStyle: NSDateFormatterNoStyle];
[shortTimeFormatter setTimeStyle:NSDateFormatterShortStyle];
}
return shortTimeFormatter;
}
return nil;
}
@end
我对这种方法的问题之一是我们目前没有“保护”
NSDateFormatter
免遭更改。由于格式化程序在我们的应用程序中基本上是“共享”的,如果另一个对象更改了格式化程序的配置(例如时间/日期样式),这可能会导致问题。因为我们在内部使用它,所以我不太担心团队误用这个功能的风险(即它是一个小团队,并且有清晰的注释)。
然而,我想知道这里的最佳实践。
有办法返回一个不可变的日期格式化程序的引用吗?如果我返回格式化程序的副本,那是否比我们现在执行的分配/初始化操作更便宜?
还有其他方法吗?
我们将使用这个并运行,但编写“更好”的代码时获得一些反馈总是很好的。
NSDate
类添加一个“公共”API:[date PDShortTime]
。然后,缓存的NSDateFormatter
对象只在幕后访问。感谢您的答案! - thauburger