4

私はしばらくの間、switch ステートメントをフォーマットする方法について対立してきました。実行可能なオプションは 3 つあります。最初のオプションを頻繁に使用してきましたが (最も頻繁に使用するフォームであるため)、2 番目と 3 番目のオプションの方が直感的です。

初め:

switch(x) {
    case 1:
        DoSomething();
        break;
    case 2:
        DoSomething();
        break;
}

2番:

switch(x) {
    case 1: DoSomething();
        break;
    case 2: DoSomething();
        break;
}

三番:

switch(x) {
    case 1: DoSomething(); break;
    case 2: DoSomething(); break;
}

多くのコードスタイルが優先されることを理解しているので、公式の質問を次のように設定します。

コード全体で一貫している限り、2 番目または 3 番目のオプションを使用することに根本的な問題はありますか?

4

6 に答える 6

5

Oracle Docsに従って;

A switch statement should have the following form:

switch (condition) {
case ABC:
    statements;
    /* falls through */
case DEF:
    statements;
    break;
case XYZ:
    statements;
    break;
default:
    statements;
    break;
}

ここで重要なのはto be consistent、フォーマットに従う場合です。

お役に立てれば。

于 2013-08-14T16:52:16.153 に答える
4

コード全体で一貫している限り、2 番目または 3 番目のオプションの使用に根本的な問題はありますか。

いいえ - あなたの言語がこの形式を許可していれば、「根本的に」問題はありません。すべてのコードの書式設定と同様に、これは純粋に個人またはチームの好みです。

最初の形式には、次のような正当な理由があります。

  • caseとステートメント開始の間の視覚的な切れ目。
  • 独自のラインを見て、break;フォールスルー ケースなどを区別する)
  • 複数のステートメントと単一のステートメントがある場合の一貫性。

そうは言っても、3つのオプションのいずれにも問題はありません。

于 2013-08-14T16:55:32.360 に答える
2

私見、問題は、ケースごとに1回だけステートメントがあるとは限らないことです。それが本当の問題です-矛盾を作成しています。以下に複数のステートメントがある場合とない場合があります。

大規模なコード ベースを一瞥すると、2 番目のスタイルでは何もせずにスイッチが壊れていると思うかもしれませんが、3 番目のスタイルではブレークが意図的に省略されているケースの 1 つだと思うかもしれません。

もちろん、コードを詳しく見て理解するか、矛盾に慣れると、これらは両方とも消えます (したがって、心の中で一貫性に変わります)。しかし、スタイル/標準のコーディングの要点はそうしなくていいように。

「if (条件) ステートメント;」と同様の処理です。vs. "if (condition) {statement;}" - 後者はより一般的であるため、大規模なコード ベースを読む手間が少なくて済みます。これが、ほとんどのスタイル ガイドがそれを主張する理由です。

于 2013-08-14T16:55:26.830 に答える
1

作業しているコード ベースの標準に従っていれば問題ありません。物事を行うためのより良い方法を定義したい場合は、すべて自分の好みに依存します. 読みやすいものもあれば、他の標準を好むものもあります。その場合 (新しいプロジェクトの新しい標準を定義する場合)、最も一般的な形式を使用してみてください。

そうは言っても、スイッチにコードが 1 行しかない場合、私はよく 3 行目を選びます。標準を一貫して使用することよりも読みやすさの方が重要だと思います (おそらく、標準を一貫して使用することは読みやすくするためです)。

于 2013-08-14T16:58:50.830 に答える