gpt4 book ai didi

objective-c - 为什么我不应该只定义 #define NSFM [NSFileManager defaultManager] 而不是每次都写出来?

转载 作者:太空狗 更新时间:2023-10-30 03:59:56 25 4
gpt4 key购买 nike

有一个内置的快捷方式 NSApp,我有什么理由不应该为 NSFileManager 添加一个?

#define NSFM [NSFileManager defaultManager]

我认为省略它会使我的代码更清晰,我看不出保留它有什么好处。(我计划从现在开始在我的所有项目中都这样做,所以它不会晦涩难懂。)

NSFileManager *fm = [NSFileManager defaultManager] 

最佳答案

为什么不直接使用局部变量呢?

NSFileManager *fm = [NSFileManager defaultManager];
// use fm...

或者更好的是,将文件管理器作为方法参数注入(inject):

- (void)myMethod {
//using [NSFileManager defaultManager]
}

成为

- (void)myMethodWithFileManager:(NSFileManager*)fm {
//usin fm
}

由于 defaultManager 是单例(实际上是全局的),这使得测试非常困难。注入(inject)依赖项可以节省您在方法中键入(如您所愿)的时间,并使单元测试变得更加容易——您可以注入(inject)一个测试替身而不是 defaultManager。

最后,Cocoa 和 Objective-C 普遍认为显式代码优于短代码。基本原理是使用更冗长的名称使代码更易于阅读(从而更易于维护)。这种理念一直延伸到 Objective-C 的带有交错命名参数的选择器风格。除非您真的无法处理额外的输入(并且 Xcode 的代码完成对您不起作用),否则请坚持使用现有名称。在罗马的时候……

关于objective-c - 为什么我不应该只定义 #define NSFM [NSFileManager defaultManager] 而不是每次都写出来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2111149/

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