プロが教える店舗&オフィスのセキュリティ対策術

インデントがよくないってどういうことですか?

見やすく揃えて改行すればいいだけなのでしょうか?

C言語なのですが、インデントがよくないと何かだめなことがありますか?

A 回答 (3件)

例えば



for(i=0;i<10;++i)
  printf("%d:",i) ; /* (1) */
  printf("%d\n",2*i); /*(2)*/

とあったら(1)と(2)を10回ずつ実行しそうですよね。でも、実際には(1)を10 回実行した後に(2)が実行されます。
プログラムの構造を無視して(1)と(2)を「見やすく」揃えたために、よくないインデントになってます。

for(i=0;i<10;++i)
  printf("%d:",i) ; /* (3) */
printf("%d\n",2*i); /*(4) */

これだったら、(3)と(4)は別だとわかりやすくなりますよね。
あるいは、(1)(2)を10回ずつ、が正しい動作で、{}を忘れているのかもしれません。だとしたら、次のように直す必要があります。

for(i=0;i<10;++i){
  printf("%d:",i) ; /* (1') */
  printf("%d\n",2*i); /*(2')*/
}

この程度の量ならまだなんとかなりますが、プログラムの規模が大きくなると、間違いのもとになります。

そこで、よりよいインデントでプログラムを読みやすくして、間違いを減らそう、ということです。
で、「読み易い」にも個人差があるので、いろんな流儀があって、グループで開発するときは、それを統一することが大事、というのは先の方の回答にある通りです。

特にCはきたなく書こうと思えばとことんきたなく書けます。そんなきたなさを競うコンテストがあるくらいです(→参考URL)。(インデント以外の技も使われてますが)
入選作品を見ると、アスキーアートになってたり、四角に収まってたりと、きれいに改行されてます。が、プログラムとしては読みにくいことこの上ありません。

参考URL:http://www.ioccc.org/years.html
    • good
    • 0

通常は構造化言語のひとつであるCでは、制御構造ごとに字下げをして、プログラミング上の意味的に区別を付けるのが、一般的です。


でも、実は細かいところで、人により癖というかやりやすい(見やすい)方法が違っていて、多人数で開発などをするときには、障害になります。
チームの流儀にあわせるようにするしかありません。

C言語では、特別な場合を除いては、インデントにプログラム上の意味はありません。他の多くの「フリーフォーマット言語」でも同様です。

詳しくは、リンク先を参照してください。

参考URL:http://ja.wikipedia.org/wiki/%E5%AD%97%E4%B8%8B% …
    • good
    • 0

インデントとは字下げのことです。



インデントがよくないってどういうことですか?
→行によって3文字目からとか5文字目から始ったりして一貫性がないなど。一般的には、4文字ごとに字下げします。

見やすく揃えて改行すればいいだけなのでしょうか?
→だめです。”見やすく揃えて改行すれば”の解釈が人によって異なるため、複数で開発しているときに一貫性がなくなります。
字下げのルールを決めることが重要です。
なぜ字下げの一貫性を保つかというと、見やすいというメリットのほかに、CVSやSVNで差分をとったときに不必要な変更箇所を極力減らすことができるというメリットがあります。
一般的にはEclipseなどのIDEやテキストエディタなどのインデント機能を用いて一貫性を保ちます。

C言語なのですが、インデントがよくないと何かだめなことがありますか?
→あります。上記に書いたとおりですが、インデントがよくないと読みづらいです。高速でプログラムを読み取るときにインデントがよくないと読み違えたりしそうです。(最近はインデントが悪いプログラムなどありませんから、インデントがよくないとどれだけだめなのかあまり実経験はありませんが。)

まあとにかく、インデントもろくにできていないというのは論外です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!