簡體   English   中英

在代碼中注釋printf()語句

[英]Commenting printf() statements in code

最近,使用了大量的代碼,我觀察到有時候添加一些額外的printf()語句並對它們進行注釋對於后續階段的調試非常有用(當代碼必須被修改時更容易)。 但是有關於過度評論代碼和缺乏適當評論的爭論。 我不確定這種做法在哪里? 此外,我發現這種評論方式的一個缺點是,它使代碼看起來更加丑陋。 這是一個例子:

...... //code
 ...... 
 pkt_bytes_decd = avcodec_decode_audio4( aCodecContext, pFrame, 
                                         &frame_fin, &packet );
//printf("%d bytes from packet decoded\n",pkt_bytes_decd); ...... ...... //code
這是一種不好的做法嗎? 有人可以根據他們的經驗討論利弊嗎?

使用一些依賴於啟用或禁用調試標志的宏更清晰。

這樣,您無需取消注釋即可調試任何內容。 只需啟用調試標志,它就會立即啟用所有此類位置的日志記錄。

有時會使用另一種方法 - 調用log(level, message)類的函數log(level, message)只有當level超過設置的閾值(通常稱為error,warning,info等)時才會發出消息。 它效率不高,但調試更容易。

如果要在最終代碼中包含調試語句,請使用命令行選項設置全局,然后檢查每個printf的全局:

if(DEBUG) printf("extra info");

如果您需要調試語句,但不需要最終代碼,請使用預處理器:

$ gcc -DDEBUG <files>

#ifdef DEBUG
printf("extra info");
#endif

您需要區分永久記錄信息以便在客戶站點進行故障排除,並在開發時僅記錄信息。 我發現后者大多可以通過使用調試器和普通// "why-comments"來替換。 如果由於某種原因使用調試器太麻煩,那么我個人覺得最好有一個不受發布或調試模式影響的日志記錄機制。

在開發,發布版本和調試版本時,有兩個不同版本的程序總是存在風險。 如果版本差異太大,您可能會在以后遇到一些令人討厭的驚喜。 事實上,它們就像兩個不同的程序。

例如,調試語句通常會使程序運行速度變慢,因此如果您的代碼中存在某些時序問題(例如競爭條件),它們可能會被隱藏但當您在發布模式下運行程序時會突然彈出(或者更可能是正在向客戶/用戶展示該計划。

為什么注釋

++藻; //將堆棧指針移到最后一個元素以標記下溢

什么注釋

++藻; //增量sp

編譯器不保留注釋。 所以可以在評論中寫printf。 這不是一個糟糕的做法..但過度的做法很糟糕。 關鍵是: - “平衡”

PROS: - 1)調試快速檢查變得很容易。

缺點: - 1)評論本身可能比代碼更令人困惑。 2)在調試時,程序員可能傾向於高度依賴於注釋,從而忽略了代碼流。 3)在編寫代碼時進行注釋是多任務的。 這會減慢編碼速度。:-(

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM