これについては、上で述べたようにいくつかの見解があります。基本的に、スタイルとコメントは保守性に役立ちます。
コードはコンパイラーのためではなく、プログラマー (あなた自身を含む!) のために書かれています。コードを読む必要がない場合は、(本物のプログラマーのように!) 16 進パッドで打ち込んで完了です! :-)
しかし、そのようなことはほとんどありません。コードの有効期間中、コンパイラはコードの処理に合計数秒を費やす場合があります。しかし、プログラマーは何日も費やすことがあります。また、読みにくい、または理解しにくい場合は、その日数が数週間に及ぶこともあります。コードを自己文書化するために努力する必要がありますが、それに依存しないでください。これまで。
インデントは制御フローを示します。インデントのない一連の行には制御フローがある可能性がありますが、それを検出するには各行を読み取る必要があることを意味します。
if(someSituation) somethingElse++;
対。
if(someSituation)
somethingElse++;
2番目のバージョンは視覚的に飛び出します。決定が下されたことを確認するために、コードを読んで理解する必要はありません。コードをスキャンして何かをすばやく見つけるときに非常に重要です。
ほとんどの IDE とプログラミング エディターでは、コード ブロックを即座にインデントできます。これは非常に簡単なので、ぶら下がっている「else」やその他の演算子のヘッドスペースの問題が発生しないようにするためだけに実行する必要があります。インデントがないことを正当化するのは非常に困難です。
コメントも重要です。コメントがコードと一致しない場合、それらは両方とも間違っています (誰が最初にこれを言ったか覚えていませんが、彼/彼は死んでいます!)。
最初にコードをレイアウトするときにコメント ブロックを挿入し、次にコードを記述してデバッグし、再度コメントを確認します。問題を誤解している (コメントを変更する) か、間違ったことを実装している (コードを変更する) ことに気付くかもしれません。または、ライブラリ関数を再実装し (最終的に奇妙なことをする必要がある場合に備えて、一時的にすべてコメントアウトして)、関数の呼び出しを行ったことに気付くかもしれません。
不適切な名前のライブラリ関数を使用しなければならない場合があります。RTFM と言って先に進むか、要約コメントを入れて次のプログラマ (おそらく 6 か月後の自分) の労力を節約することができます。
// This allocates space for the message queue and initializes
// some OS overhead. All that remains after this is adjusting
// priority and content and then send the message.
prepareMessage(&myMessage);
さらに、2 日間かけてバグを調査し、コードに小さな変更を加えた場合、設計時にその変更が明らかでなかった可能性が高くなります。そうでなければ、そもそもそこにあったでしょう!したがって、将来誰かが「明白な」実装に戻すのを防ぐためにコメントが必要です。
memset(&myStatus, 0, sizeof(myStatus));
// The size member must be set before getting current values.
// This is used by library function GetCurrentStatus() to infer
// a version of the status structure.
myStatus.length = sizeof(myStatus);
GetCurrentStatus(&myStatus);