我并不是要在这里开始编码圣战的代码,但我想知道是否有人对如何在Objective-C中最好地格式化嵌套块有任何建议。
这是我今天写的一些代码:
[UIView animateWithDuration:1.0
animations:^{
self.alpha = 0.5;
}
completion:^(BOOL finished){
[UIView animateWithDuration:1.0
animations:^{
winView.alpha = 1.0;
}
completion:^(BOOL finished){
winView.alpha = 0.0;
}];
}];
我几乎让Xcode格式化它,并不是很糟糕。但是我有点害怕在六个月内我会偶然发现这个问题来修复一些错误,并且想要打扮自己。
任何人都有关于如何使嵌套块尽可能可读的指针?
答案 0 :(得分:4)
这就是为什么通用标准只有一个方法或函数的块参数,并且始终将块作为最后一个。在这种情况下,这可能是UIView
提供的最自然的东西,而且你有它。
无论如何,你的方法是正确的。如果有的话,我可能会将内部块作为局部变量分解并将其作为参数传递。或者更多的块。
但是,能够选择整个文件并让Xcode重新格式化整个文件的方法可以节省大量时间;我一直在我的源上选择all-tab。最大限度地减少差异和不一致。
答案 1 :(得分:2)
这里真正的问题是采用多个块参数的方法,这使得它既丑陋又难以阅读。我还没有编写任何需要使用它的实际代码,但有一种可能性是将}
和];
分开:
[UIView animateWithDuration:1.0
animations:^{
self.alpha = 0.5;
}
completion:^(BOOL finished){
[UIView animateWithDuration:1.0
animations:^{
winView.alpha = 1.0;
}
completion:^(BOOL finished){
winView.alpha = 0.0;
}
];
}
];
这打破了块的标准格式(将}
和];
保持在一起),但我认为它更具可读性。
答案 2 :(得分:0)
我如何推荐
[UIView animateWithDuration:0
animations:^
{
[UIView animateWithDuration:1
animations:^
{
<#code#>
}];
}
completion:^(BOOL finished)
{
[UIView animateWithDuration:1
animations:^
{
<#code#>
}
completion:^(BOOL finished)
{
<#code#>
}];
}];
默认行为
[UIView animateWithDuration:0
animations:^{
[UIView animateWithDuration:1
animations:^{
<#code#>
}];
} completion:^(BOOL finished) {
[UIView animateWithDuration:1
animations:^{
<#code#>
} completion:^(BOOL finished) {
<#code#>
}];
}];
(请注意,它是完全相同的代码)
我知道Xcode会强行打开同一行的大括号,但请注意,如果在新行中打开大括号,您可以编写代码 4(!!!)次更接近左边。
另外,我认为它提高了可读性。