【发布时间】:2012-01-05 09:51:40
【问题描述】:
这是我的 iOS 应用中的一段代码:
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Do you like my hat?"
message:@"If so, please help spread the word by rating our app now?"
delegate:nil
cancelButtonTitle:@"No Thanks"
otherButtonTitles:@"Sure!", @"Maybe Later", nil
];
为什么 Xcode 缩进这么多行?作为一个古老的 Perl、Ruby 和 JavaScript 猴子,我更倾向于像这样手动缩进它:
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle: @"Do you like my hat?"
message: @"If so, please help spread the word by rating our app now?"
delegate: nil
cancelButtonTitle: @"No Thanks"
otherButtonTitles: @"Sure!", @"Maybe Later", nil
];
所以参数名称和值都是左对齐的,并且只缩进一级(我是 4 个空格)。这使用的屏幕空间要少得多,而且我不太可能需要在 MacBook Air 上处理换行(这使得极右缩进的内容更难阅读)。
但是,我认为 Apple 更喜欢第一种方法是有原因的,因此 Xcode 采用这种方式缩进。或者有吗?
所以我有两个问题:
- 您更喜欢如何在 Objective C 代码中缩进方法参数?
- 如何调整 Xcode 以使用您喜欢的缩进样式进行格式化?
不想在这里发动圣战;我更好奇的是 Objective-C 程序员中的最佳实践,Xcode 如何帮助这些实践,以及找出 Xcode 的默认方式是否有充分的理由。
更新: 评论者和回答指出,默认格式将参数与冒号对齐。我应该在发帖之前记住这一点,因为我当然注意到了,当最长的项目没有太多缩进时,它看起来很漂亮。但我发现,通常情况下,最长的项目 缩进很多。例如:
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"Do you like my hat?"
message:@"If so, please help spread the word by rating our app now?"
delegate:nil
cancelButtonTitle:@"No Thanks"
otherButtonTitles:@"Sure!", @"Maybe Later", nil
];
这是为什么呢?即使我希望它们在冒号处对齐(而且我经常手动格式化它们),缩进这么多似乎很愚蠢。为什么它坚持缩进到开头冒号的水平?为什么不只是一个缩进级别,右括号向外缩进以显示缩进“块”的结尾?例如:
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"Do you like my hat?"
message:@"If so, please help spread the word by rating our app now?"
delegate:nil
cancelButtonTitle:@"No Thanks"
otherButtonTitles:@"Sure!", @"Maybe Later", nil
];
这似乎比the Google style guide's line length recommendation 更好,不是吗?
有没有办法调整 Xcode 以这种方式格式化参数?
【问题讨论】:
-
“你喜欢如何缩进...”是not a good stackoverflow question。至于“你如何调整 Xcode ...”,没有任何选项可以让它自动缩进不同的多行选择器。
-
FWIW,您可以通过在 init 之前添加换行符来获得与您想要的类似的行为。它会自动缩进以排列冒号。
-
@robmayoff:很好,谢谢。我已经更新了问题。
-
@jrturton:是的,我应该在发帖之前记住这一点,所以我添加了一个更新来解决这个问题。恕我直言,它似乎仍然缩进太多。
-
使用 AppCode。它在开发者功能和“开发者乐趣”方面遥遥领先于 Xcode,JetBrains 跨多种语言和生态系统构建 IDE 的经验远远超过 Apple 团队(或 Microsoft 或 Xamarin)的经验。是的,“ASCII 艺术”是一种代码风格的反模式。使用 Xcode 的默认样式,如果您在方法中重命名参数,则必须重新格式化整个项目,相邻行也会受到影响。显然,理解恒定/轻松重构和为您执行重构工作的现代工具的价值的人不会选择这种理念。
标签: objective-c xcode4 formatting indentation auto-indent