C/C++ comments

註解主要的目的是讓其他人可以快速的理解程式碼,或是原始作者在後來修改自己的程式碼,不至於深陷混亂的程式碼泥沼當中。
但必須要注意註解過多過冗長不宜,因為註解本身不能取代程式碼,而程式碼才是主體。所以在註解上基本的原則是:

  • 要說明function/class的目的,在function內部不易閱讀的地方註記使用的演算法或是方法的目的(rationale),讓閱讀者可以抓住開發者當時的思路。
  • workaround的部分也必須註記,因為通常workaround不是在原來的正常思路當中,如果不加以註記,有很大的機會在後來會完全摸不著頭緒

另外是如果整合了文件產生工具或是IDE整合,為了要讓工具提取重要的metadata,註解的格式就會有所規範,可以參考
https://www.stack.nl/~dimitri/doxygen/manual/docblocks.html,
XML Documentation (Visual C++)

在C/C++裡註解分兩種: 單行註解(single-line comments, C style)多行註解(multi-line comments, C++ style)
C89不支援單行註解,但C99標準加上了

/* 
這是多行註解, 來自C語言的註解方式 
*/
/*也可以單行*/
//這是單行註解 
/* // 多行註解裡可以有單行註解 */
//註解原來已有多行註解符號的區塊,使用預處理指令
#if 0 
/* test function */
void test()
{
}
#endif
// or use 單行註解
///*
// test function
//*/ 
//void test() 
//{ 
//}
//or use if(0){ } //使用語言本身的語法
if(0) //這會讓區塊內的程式碼不執行
{
/* test function */
void test()
{
}
}

將整段程式碼註解時一般可用多行註解的方式,
但是多行註解不可nested,
故若碰到段落內已有多行註解時則要
改用全部單行或是用preprocessor裡的#if 0的方式處理,
或是語言本身的 if(0)。

comment style
有時候為了使註解醒目,會用一些排列方式呈現

/**
 *
 *
 */
/////////////////////////////////////////////////
///
/////////////////////////////////////////////////
/*-----------------------
|
+-----------------------
|
*------------------------*/

一般來說,程式原始檔的註解會標記 檔案 作者 變更紀錄
function, class 等的註解

/***********************************************************************
 * FILENAME : example.c
 *
 * DESCRIPTION :
 *       This is an example. 
 *
 * PUBLIC FUNCTIONS :
 *       void test()
 *
 * AUTHOR :    Enrico        START DATE :    1 Jan 2000
 *
 * CHANGE HISTORY :
 *
 * VERSION DATE         DETAIL     
 * 1.0     2000/01/01   fix ....       
 *
 */

相關參考資料:
https://google.github.io/styleguide/cppguide.html#Comments
http://en.cppreference.com/w/c/comment
http://en.cppreference.com/w/cpp/comment
http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html
also
ISO/IEC 9899:1999 6.4.9
ISO/IEC 9899:1990 6.1.9

This entry was posted in Tips. Bookmark the permalink.

Leave a Reply