【问题标题】:Is there any benefit to condensed code?压缩代码有什么好处吗?
【发布时间】:2013-01-02 02:44:12
【问题描述】:

假设我有一个长几行的语句:

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"]];

【问题讨论】:

  • 这就是例程的用途。
  • 没有性能优势。可能会有可读性好处或可读性损失。您的目标应该是使代码尽可能地可读和可维护。
  • @GregS,您应该将此作为答案发布,因为它是最正确的,IMO。
  • 压缩成1行就不好调试了。

标签: objective-c cocoa coding-style


【解决方案1】:

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

有一次我知道我会避免使用单行代码,那就是初始化方法需要多个参数时,因为它可能会变得混乱且难以理解,尤其是当您深入多层时。举个简单的例子:

id someObject = [MyClass myClassWithThing:[Thing thingWithX:5 andY:5] supportingThing:[SupportingThing supportingThingWithString:@"Tada!"] error:NULL];

有些人喜欢使用Eastern Polish Christmas Tree notation,它看起来像:

id someObject = [MyClass myClassWithThing:[Thing thingWithX:5 andY:5]
                          supportingThing:[SupportingThing supportingThingWithString:@"Tada!"]
                                    error:NULL];

同样,这里没有可遵循的规则。尽管 Objective-C 对如何命名类和方法有约定,但我还没有遇到嵌套消息发送的约定。

首先,代码的可读性和可维护性。

【讨论】:

  • 无论您是否将这些变量声明为内联,它们都是以任何一种方式创建的。也就是说,[NSString string] 创建了一个 NSString 对象的实例,无论它是内联完成的(作为方法输入的一部分)还是作为临时变量。唯一的区别是您是否在临时变量中引用了它。 (我的意思是内联创建它没有内存优势,您的帖子似乎暗示可能存在这种情况。)
  • @JRG-Developer:那不是我的本意。当然,对象是通过任何一种方式创建的,我的意思是您不必为中间变量写出并选择名称。
猜你喜欢
  • 1970-01-01
  • 2011-02-05
  • 2014-04-10
  • 2019-07-05
  • 1970-01-01
  • 2011-01-28
  • 1970-01-01
  • 2012-08-18
  • 2020-03-21
相关资源
最近更新 更多