代码之家  ›  专栏  ›  技术社区  ›  zpasternack

Objective-C嵌套块的格式提示

  •  1
  • zpasternack  · 技术社区  · 15 年前

    我不想在这里开始一场代码格式化圣战,但我想知道是否有人对如何最好地格式化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;
                }];
      }];
    

    有人对如何使嵌套块尽可能可读有任何指导吗?

    3 回复  |  直到 13 年前
        1
  •  2
  •   Nick Forge    15 年前

    这里真正的问题是采用多个块参数的方法,这使得它要么难看要么难以阅读。我还没有编写任何真正需要使用它的代码,但有一种可能是将 } ]; 这样地:

    [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
  •  4
  •   bbum    15 年前

    UIView 提供给你,你就有了。

    然而,能够选择整个文件并对整个文件进行Xcode重新格式化的方法是一个巨大的时间节省;我总是在源代码上选择所有选项卡。最小化差异和不一致。

        3
  •  0
  •   OlDor    9 年前

    我怎么推荐

    [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强制在同一行中打开大括号,但是请注意,在块的情况下,在新行中打开大括号可以让您编写代码

    另外,我认为它提高了可读性。