2011-04-10 8 views
4

可能性の重複:
Why don't people indent C++ access specifiers/case statements?スイッチ内のcase文がIDEによって字下げされていないのはなぜですか?

は私がいないどのようにについて...構文の質問を持っているのではなく、なぜ

Day randomDay = getRandomDay(); /* returns 'enum Day' */ 

switch (randomDay) { 
    default: 
    case Monday: 
    /* ... */ 
    break; 
    case Tuesday: 
    /* ... */ 
    break; 
    /* ... */ 
} 

:私は常に、これは一般的なコードのインデントルールと矛盾していると私はこれを行うことを好むことがわかってきました

Day randomDay = getRandomDay(); /* returns 'enum Day' */ 

switch (randomDay) { 
default: 
case Monday: 
    /* ... */ 
    break; 
case Tuesday: 
    /* ... */ 
    break; 
/* ... */ 
} 

:などのEclipseとQt Creatorをなどの多くのIDEは自動的にこのようなswitchをインデント同様に、C++のクラス定義は、多くの場合、このようにインデントされています

class MyClass { 
public: 
    /* ... */ 
} 

とは対照的に:

class MyClass { 
    public: 
    /* ... */ 
} 

case文をインデントしないように選択した人がいるのはなぜですか?

+5

彼らは明らかにあなたに同意しないからです。味について論じることはできません。 –

+4

しかし、case文をインデントしないのはどういう意味ですか?ほとんどの人がそうすることを好む理由がある、そうでなければ誰もそれをしないだろう。 – Pieter

+0

味は非合理であり、何かを見つけることを試みることは無意味です。 –

答えて

10

コードスタイルは尻尾のようなものです。誰もが、他の人のような少数の人しかいません。

これもここでも適用されます。 IDEのインデント論理を書くときにそれを気に入った人もいました。ほとんどの良いIDEにはこの動作を設定するオプションがあります。

このスタイルの考えられる原因は、ラベルを字下げしないことが一般的であるように見えることです。ケースは特殊なラベルです。

1

これは純粋に個人的な好みのものです。インデントレベル、タブとスペース、そして中括弧の配置は、プログラマの戦争の話題であり、常にそうであろう。

特定のエディタまたはIDEには、ターゲットオーディエンスの特定のプログラマーの間で「共通の」慣習に従って設定されたデフォルトがあります。デフォルトを気に入らない場合は、ほとんどの場合、カスタマイズする方法があります。

プログラマーのチームで作業している場合は、特定の規則を決定する必要があります。そうしないと、時間が終了するまでお互いのコードを再フォーマットすることになります。

0

Eclipseではいくつかのプリセットスタイルから選択できます。 K & R、それぞれ完全にカスタマイズ可能、または独自のデフォルトを作成する。

各スタイルの選択肢については完全に合理的な説明がありますが、Stroustrupは彼のC++ FAQでもこれに対処しています。そして、それは重要ではありません - "良いと感じるものをやる"(理由の中で)。

関連する問題