7

これが私の 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
    ];

そのため、パラメーター名と値はすべて左揃えで、1 レベル (私の場合は 4 つのスペース) だけインデントされています。これにより、使用する画面のスペースがはるかに少なくなり、私の MacBook Air で折り返し行 (一番右にインデントされたものをさらに読みにくくする) に対処する必要がなくなる可能性が低くなります。

ただし、Apple が最初の方法を好む何らかの理由があると思います。そのため、Xcode のインデントはそのようになっています。それともありますか?

だから私は2つの質問があります:

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

何故ですか?コロンに合わせて配置したかったとしても(そして、そうするために手動でフォーマットすることがよくあります)、それほどインデントするのはばかげているようです。開始コロンのレベルまでインデントすることを主張するのはなぜですか? インデント「ブロック」の終わりを示すために閉じ括弧をアウトデントして、インデント レベルを 1 つだけにしないのはなぜですか? 例えば:

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

これは、Google スタイル ガイドの行の長さの推奨事項よりも優れたデフォルトのようです。

このようにパラメータをフォーマットするために Xcode を微調整する方法はありますか?

4

2 に答える 2

5

1)複数のパラメーターが指定されている場合、Objective-cのインデント規則はコロン記号に揃えられます。

働き:

- (void)functionWithOne:(NSString *)one two:(NSString *)two tree:(NSString *)three;

次のようにフォーマットする必要があります。

- (void)functionWithOne:(NSString *)one 
                    two:(NSString *)two 
                  three:(NSString *)three;

私はジャワ出身で、最初はなかなか慣れませんでした。しかし、それを数回変えてみた後、これは本当に最も良い方法です。

2)xcodeで変更できるとは思いません(わかりません)。Appleの慣習は、それがどのようであるかをかなり明確にしています。

編集:呼び出し。私は個人的に最初のパラメーターから始めて、残りを次のように調整します。

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];
于 2011-11-24T07:31:46.930 に答える
3

Xcodeでフォーマットする方法はわかりませんが、コードフォーマットツールの2つのオプションは次のとおりです。

  1. Uncristifyを使用します。それを構成するためのGUIツールがあります:UncrustifyX
  2. JetbrainsのiOS/OSXIDEであるAppCodeを使用します。これには構成可能で組み込みのフォーマットがあります。スクリーンショットを参照してください。

AppCodeコードフォーマットツール

于 2013-01-14T08:04:30.543 に答える