Objective c 压缩代码有什么好处吗?

Objective c 压缩代码有什么好处吗?,objective-c,cocoa,coding-style,Objective C,Cocoa,Coding Style,假设我有一个语句,有几行: NSString *urlString = @"http://www.example.com"; NSURL *url = [NSURL urlWithString:urlString]; ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; 把它浓缩成这样一行有什么好处吗 ASIFormDataRequest *request = [ASIFormDataRequest req

假设我有一个语句,有几行:

NSString *urlString = @"http://www.example.com";
NSURL *url = [NSURL urlWithString:urlString];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
把它浓缩成这样一行有什么好处吗

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL urlWithString:@"http://www.example.com"]];

单行版本的好处是不必创建临时中间变量。如果这些中间变量没有其他用途,这将特别有用。在某些情况下,使用一个衬里看起来更整洁,但在其他情况下,它可能看起来笨重。没有硬性规定可以遵循,这完全取决于你自己的审美观。就个人而言,我会为您的场景选择一行版本,但可能还有其他人不同意

有一次,我知道我避免使用一行程序,那就是当一个初始化器方法接受多个参数时,因为它可能会变得混乱和难以理解,特别是当你深入到几层时。例如:

id someObject = [MyClass myClassWithThing:[Thing thingWithX:5 andY:5] supportingThing:[SupportingThing supportingThingWithString:@"Tada!"] error:NULL];
有些人更喜欢使用,这看起来像:

id someObject = [MyClass myClassWithThing:[Thing thingWithX:5 andY:5]
                          supportingThing:[SupportingThing supportingThingWithString:@"Tada!"]
                                    error:NULL];
再说一次,这里没有规则可循。尽管Objective-C在如何命名类和方法方面有约定,但我还没有遇到嵌套消息发送的约定


首先也是最重要的一点是,代码的可读性和可维护性。

这就是例程的用途。没有性能优势。可能存在可读性优势或可读性损失。您的目标应该是使代码尽可能可读和可维护。@GregS,您应该将此作为答案发布,因为这是最正确的,IMO。如果压缩到一行,则不容易调试。无论您是否内联声明这些变量,它们都是以任何方式创建的。也就是说,
[NSString]
创建一个
NSString
对象的实例,不管它是内联完成的(作为方法输入的一部分)还是临时变量。唯一的区别是在临时变量中是否有对它的引用。(我的意思是,内联创建它没有内存优势,你的帖子似乎暗示了可能存在这种优势。)@jrgdeveloper:这不是我的本意。当然,对象是以任何一种方式创建的,我的意思是,您不必为中间变量写出并选择名称。