这行得通——它确实可以编译——但我只是想检查一下它是否被认为是好的做法或应该避免的事情?
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/