2009-11-25 48 views
1

我嘗試爲日誌記錄製作一個有用的宏。但是我發現NSLog和所有其他類型的帶有文本信息的宏只是分散了很多代碼。是否可以定義一個看起來幾乎像評論的宏?

有沒有什麼辦法的方式,它會解釋像

/*** do this because of that ***/ 

宏調用,從而導致通話的NSLog,例如「黑客」的Xcode?我希望這些日誌能夠像評論一樣「感覺」。其他任何看起來像關鍵代碼的東西只是分散注意力,並最終降低生產力,然後記錄發生的事情並沒有真正的好處。

+3

我不知道,我個人認爲那些黑客的評論會更分散注意力,並使代碼最終變得更加混亂。 (「這些日誌從哪裏來?!」) – Malaxeur 2009-11-25 19:52:33

回答

7

是否可以定義一個看起來幾乎像評論一樣的宏?

爲什麼你想讓你的代碼不易讀?

答案是否定的,這是一件好事。

有沒有辦法在某種程度上「黑客」的Xcode,它將解釋像

/*** do this because of that ***/ 

宏調用...

可能,但這是沒用的。所有可能的做法是使語法着色不正確(將此註釋着色爲函數調用)。編譯器(GCC或Clang)仍然會將其視爲它的評論。

使編譯器認爲這是一個函數調用或宏調用是在運行時實際實現日誌輸出的內容,但即使您可以這樣做,仍然是一個壞主意,因爲您會有一個函數調用或宏調用僞裝作爲評論。

如果你希望你的程序登錄的消息,寫日誌代碼:

NSLog(@"Do %@ because of %@.", foo, bar); 

此代碼是明確代碼在運行時做一些事情。沒有神祕感。沒有驚喜。這就是爲什麼它更好。

1

不,我知道的(雖然我可能是錯的!)

我認爲,如果你希望它看起來不同,宏可能是你能期待的最好 - 它至少會被高亮一個不同的顏色:)

+0

但仍然文字是憤怒的紅色。儘管它在調試中幫助很大,但我放棄了所有代碼。當開始再次發展時,它只是分散注意力以至於不值得。有多少個日誌行像代碼行一樣...就像5000個日誌行一樣。 – 2009-11-25 15:17:18

+0

也許你需要問自己爲什麼你要記錄這麼多?每條線的日誌看起來真的太過分了。 – Jasarien 2009-11-28 03:18:09

2

你可以將一行或多行NSLog括在大括號中,然後使用Xcode的摺疊選項來隱藏它們。

實施例:

{ 
    NSLog(@"<#label#>"); 
    NSLog(@"<#label#>"); 
} 

摺疊時的樣子:

{...} 

展開使它們更視覺上不同的時,大括號還將縮進語句。

我想你應該重新考慮你使用日誌語句。如果你有多少個日誌語句,那麼代碼行有錯誤。您應該使用調試器來打印大部分值和消息。如果你有這麼多的日誌語句,你就會發現日誌語句中的錯誤比代碼產生更多的錯誤。清理髮布代碼也有一個很大的問題。

相關問題