objective-c - 附加到 NSString 时应该使用中间临时变量吗?

标签 objective-c cocoa coding-style

这行得通——它确实可以编译——但我​​只是想检查一下它是否被认为是好的做法或应该避免的事情?

NSString *fileName = @"image";
fileName = [fileName stringByAppendingString:@".png"];
NSLog(@"TEST  : %@", fileName);

OUTPUT: TEST  : image.png

用一个临时变量可能会更好:

NSString *fileName = @"image";
NSString *tempName;
tempName = [fileName stringByAppendingString:@".png"];
NSLog(@"TEST  : %@", tempName);

只是好奇。

最佳答案

在内部,编译器通常会将您的代码分解为一种称为“单一静态赋值”的表示形式,其中给定变量只分配一个值,并且所有语句都尽可能简单(复合元素被分成不同的行)。您的第二个示例遵循这种方法。

程序员有时确实会这样写。它被认为是最清晰的代码编写方式,因为您可以将所有语句写成基本元组:A = B operator C。但是对于“显而易见”的代码,它通常被认为过于冗长,因此它是一种不常见的风格(在情况之外你试图让非常神秘的代码易于理解的地方)。

一般来说,程序员不会被您的第一个示例搞糊涂,并且您不需要再次使用原始 fileName 的地方被认为是可以接受的。然而,许多 Obj-C 程序员鼓​​励以下风格:

NSString *fileName = [@"image" stringByAppendingString:@".png"];
NSLog(@"TEST  : %@", fileName);

甚至(取决于行中的水平空间):

NSLog(@"TEST  : %@", [@"image" stringByAppendingString:@".png"]);

即如果您只使用一次变量,请不要命名它(只需就地使用它)。

不过,在文体上,如果您遵循单一静态赋值方法,则不应使用 tempName 作为变量名,因为它没有解释变量的作用——您而是使用类似 fileNameWithExtension 的东西。从更广泛的意义上讲,我通常避免使用“temp”作为前缀,因为开始时将所有内容命名为“temp”太容易了(所有局部变量都是临时的,因此意义不大)。

关于objective-c - 附加到 NSString 时应该使用中间临时变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1791630/

相关文章:

ios - 如何将自定义类添加到我的 UITableViewController?

ios - 我在 ios 应用程序中使用 MQTTClient,我想在订阅主题时保存用户的数据

objective-c - 如何跨多个项目在 Cocoa Touch 中实现服务定位器模式?

objective-c - Cocoa 中的内存管理

Java:如何有效地检查空指针

ios - Verifone E315 与其他支付网关的集成

iphone - 下载并保存可以为空白的图像

cocoa - 如何判断Mac Cocoa应用程序是否已正常启动或作为登录项启动?

c# - 跨语言编码标准?

c++ - 创建函数来访问类变量是一种好习惯吗?