/* */
私は通常、各セクションの先頭でを使用して、コード ブロックにコメントを付けます。コメントが「隠されている」と感じ、コードが後で拡張される可能性があり、コメントをマイクロマネージする必要があるため、特別な状況 (たとえば、トリッキーなコード) 以外ではインライン コメントを使用しません。例えば:
int parseEverything()
{
/* Initialize the parser. */
random_code_here();
still_more_init();
/// (Note: the above line still falls under the init section, even if it's separated by a newline.)
/* Main parser loop. */
while(!done_parsing) {
/* Grab the token. */
if(x) {
/* Preprocessor stuff. */
y();
} else {
/* Normal token. */
z();
}
/* Insert into tree. */
make_tree_node();
insert_into_tree();
/* Move to next token. */
++streamPtr;
/// (Note: the above could be expanded to take up multiple lines, thus
/// if an inline comment were used it'd have to be moved, if
/// you even remember there's a comment there.)
}
clean_up();
}
もちろん、コードが明らかな場合は、のようにコメントは必要ありclean_up()
ません。ただし、コメントを含めてもそれほど問題はありません。後で展開すると、追加のクリーンアップ コードをどこに置くべきかを簡単に知ることができます。
このスキームを使用すると、コメントだけで簡単に関数をたどることができます。 parseEverything
には、初期化、メイン ループ、およびクリーンアップの 3 つの主要なセクションがあります。メイン ループ内で、トークン (プリプロセッサまたは通常) を取得し、それをツリーに挿入して、次のトークンに進みます。
ほとんどの場合、各セクションは独自の [セット] 関数を呼び出すため、セクションが大きくなった場合はリファクタリングが必要になることは明らかです。
複数行のコメントをそのようにフォーマットすることを追加する必要があります(私の「IDE」( )は、デフォルトのスクリプト(私のディストリビューション用)を使用してすべての行にVim
挿入します。これは便利です):*
/*
* This is a comment which normally would be on one line, but is either split into multiple
* lines for emphasis or so we don't have 160-character hard-to-read comments everywhere.
*/
また、私は と をコメント#else
し#endif
ます:
#ifndef FOO_H
#define FOO_H
#ifdef DEBUG
#else /* DEBUG */
#endif /* !DEBUG */
#endif /* FOO_H */
しかし、それは少し話題から外れています。
(ガードは( ) を前に付ける#include
必要はありません。なぜなら、それらの使用は明らかであり、それは伝統だからです。=])not
!