2008-09-16 15 views
1

何利点があれば、次のようにフォーマットするCコードで提供される:読み取りし、取得するために、私はちょうど困難トップバージョンを見つけるこの奇妙なCコード形式は何ですか?

while(lock_file(lockdir)==0) { 
    count++; 
    if(count==20) { 
     fprintf(stderr,"Can't lock dir %s\n",lockdir); 
     exit(1); 
    } 
    sleep(3); 
} 
if(rmdir(serverdir)!=0) { 
    switch(errno) { 
     case EEXIST: 
      fprintf(stderr,"Server dir %s not empty\n",serverdir); 
      break; 
     default: 
      fprintf(stderr,"Can't delete dir %s\n",serverdir); 
    } 
    exit(1); 
} 
unlock_file(lockdir); 

などのより一般的な何か対

while(lock_file(lockdir)==0) 
    { 
    count++; 
    if(count==20) 
     { 
     fprintf(stderr,"Can't lock dir %s\n",lockdir); 
     exit(1); 
     } 
    sleep(3); 
    } 
if(rmdir(serverdir)!=0) 
    { 
    switch(errno) 
     { 
     case EEXIST: 
      fprintf(stderr,"Server dir %s not empty\n",serverdir); 
      break; 
     default: 
      fprintf(stderr,"Can't delete dir %s\n",serverdir); 
     } 
    exit(1); 
    } 
unlock_file(lockdir); 

インデントレベルは、長いブロックの外側のステートメント、特に複数のネストされたブロックを含むlongブロックのステートメントを修正します。

あなたが書いたコードに指紋を残しておけば分かります。

vimの書式設定は、トップケースを扱うために手作業で行う必要があります。

答えて

2

いくつかの書式設定およびコメント標準に従って、まずあなたが書いたコードを読んで編集する他の人にあなたの敬意を表します。ルールを受け入れずに何らかの難解なコードを書いた場合、最も可能性の高い結果は、他の人(プログラマー)と効果的にコミュニケーションできないということです。ソフトウェアがあなたとあなたのためだけに書かれていて誰もそれを読んでいないと思っても、1人で近代的なソフトウェアがどれくらい書かれているかは、コードフォーマットは個人的な選択です。

+1

私はそれが簡単だったと思います。問題は競合する基準です。全てではないが、前者を好む人もいれば、ベンの前者の方を好む人もいる。他は後者を好む。両陣営はそれについて宗教的になる。 – Randolpho

9

何もありません。インデントやその他のコーディング基準は優先事項です。

4

私は考えていたでしょうか?私は1つの垂直線でコードブロックを持っているので、一目で分かりやすいでしょうか?個人的には、直前の行の下で直接ブレースを始めるのが好きです。

1

コードだけでなく、受け入れられたスタイルです。大括弧がインデントされていないが、その中のコードがより一般的なスタイルよりも不利益または利点が多いとは思わない。おそらく、コードブロックをより明確に区切ると言って、それを正当化する可能性があります。

3

コードの書式は個人的な好みです。読みやすいのであれば、メンテナンスのために支払うことになります!

1

この形式が「利点」を持つためには、比較する別の形式の同等のCコードが本当に必要です。

私が働いているところでは、このインデントスキームは自家製折りたたみエディタの仕組みを容易にするために使用されています。

このように、私はこのフォーマットに根本的に間違っていることは何も見ません - 特定の合理的な制限内で、フォーマットは個人的な好みの問題です。

5

私はかなり標準的に見えます。私が行う唯一の個人的な変更は、中括弧を次の行の開始ではなく、前の行の開始に合わせることですが、これは個人的な選択です。

とにかく、あなたが見ている書式のスタイルは、CやC++の標準的な書式であり、コードを読みやすくしたり、特にインデントのレベルあなたは、などのネストされたループ、条件文を使って、例えば次のとおりです。

if (x == 0) 
{ 
    if (y == 2) 
    { 
    if (z == 3) 
    { 
     do_something (x); 
    } 
    } 
} 

OKこの例では、それは何が起こっているか確認するために非常に簡単ですが、あなたはif文それらの内のコードの多くを置くならば、それは時々難しいことができます一貫したインデントなしであなたがどこにいるかを伝えます。

あなたの例では、exit(1)ステートメントの位置を見てください。もしそれがインデントされていなければ、どこにあるのかを知るのは難しいでしょう。それがそうであるように、あなたはそれがその大きなif文の最後にあると言うことができます。

25

上の例は、「Whitesmithsスタイル」として知られています。 Wikipedia's entry on Indent Stylesは、いくつかのスタイルと長所と短所を説明しています。

+0

私はいつもAllmanやGNUを好んでいます。私はいつも他の型を読むのが難しいので、function(){layout。 –

+0

私はGNUスタイルの価値を見ています。特に、中括弧を数えるのに十分なスマートな構文が強調表示されている場合は、GNUスタイルの価値があります。また、2x2のインデントで80列の 'ナット'を打つのも簡単です。しかし、個人的には、私はK&Rを好んでおり、80列ナットは私が何かリファクタリングする必要がある時を教えてくれます。 –

8

ご覧の字下げはWhitesmiths styleです。それはのコードの完成版の初版で "begin-end block boundaries"として記述されています。このスタイルの基本的な議論は、C(およびPascal)のような言語ではifが単一の文またはブロックを管理するということです。従ってブロック全体は、その内容だけでなく、一貫して字下げされることによって、ifの記述の下位に示されるべきである。戻る

XXXXXXXXXXXXXXX  if (test) 
    XXXXXXXXXXXX   one_thing(); 

XXXXXXXXXXXXXXX  if (test) 
    X      { 
    XXXXX     one_thing(); 
    XXXXX     another_thing(); 
    X      } 

私が最初に(90年代)この本を読んだとき、私は練習(にそれを置くとき、私はあまりそれを好きではなかったけれども、私は、説得力があることを「始めるエンドブロック境界」の引数を見つけましたパスカルで)。私はそれがCの方がずっと好きで、読むのが紛らわしいと思っています。私はSteve McConnelが "純粋なブロックをエミュレートする"(Sun's Java Style、これはほぼK&Rです)と呼んでいます。

XXXXXXXXXXXXXX X  if (test) { 
    XXXXXX    one_thing(); 
    XXXXXX    another_thing(); 
X      } 

これは、Javaでプログラミングするのに使用される最も一般的なスタイルです(これは、私が一日中行うことです)。また、私のprevious languageに最もよく似ていて、 "純粋なブロック"言語であり、 "エミュレーション"を必要としませんでした。単一文の本文はなく、ブロックは制御構造構文に固有のものです。

IF test THEN 
    oneThing; 
    anotherThing 
END