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

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

#define NSFM [NSFileManager defaultManager]

我认为省略这将使我的代码更清洁,我看不到保持它的任何好处.(我计划从现在开始在我的所有项目中执行此操作,因此它不会模糊不清.)

NSFileManager *fm = [NSFileManager defaultManager]

解决方法

你为什么不只使用局部变量?

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

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

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

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

由于defaultManager是一个单例(实际上是全局的),因此它使测试变得非常困难.注入依赖项可以节省您在方法中键入(如您所愿)并使单元测试更容易 – 您可以注入测试double而不是defaultManager.

最后,Cocoa和Objective-C通常倾向于使用简短代码支持显式代码.哲学基本上是使用更详细的名称使代码更容易阅读(从而维护).这种理念一直延伸到Objective-C的选择器样式,并带有交错的命名参数.除非您真的无法处理额外的输入(并且Xcode的代码完成对您不起作用),否则请坚持使用现有名称.在罗马的时候……

相关文章

我正在用TitaniumDeveloper编写一个应用程序,它允许我使用Ja...
我的问题是当我尝试从UIWebView中调用我的AngularJS应用程序...
我想获取在我的Mac上运行的所有前台应用程序的应用程序图标....
我是一名PHP开发人员,我使用MVC模式和面向对象的代码.我真的...
OSX中的SetTimer在Windows中是否有任何等效功能?我正在使用...
我不确定引擎盖下到底发生了什么,但这是我的设置,示例代码和...