There is a built-in shortcut NSApp, is there any reason that I shouldn’t add one for NSFileManager?
#define NSFM [NSFileManager defaultManager]
I think omitted this will make my code cleaner and I can’t see any benefit to keeping it in. (I plan on doing this in all my projects from now on, so it won’t be obscure.)
NSFileManager *fm = [NSFileManager defaultManager]
Why don’t you just use a local variable?
or better yet, inject the file manager as a method argument:
becomes
Since the defaultManager is a singleton (effectively a global), it makes testing really hard. Injecting the dependency saves you typing (as you want) within the method and makes it much easier to unit test—you can inject a test double instead of the defaultManager.
Finally, Cocoa and Objective-C generally come down on favoring explicit code over short code. The philosophy is basically that using more verbose names makes the code easier to read (and thus to maintain). This philosophy goes all the way to Objective-C’s selector style with interleaved named arguments. Unless you really can’t handle the extra typing (and Xcode’s code completion won’t work for you), stick with the existing names. When in Rome and all that…