2011-04-05 28 views
4

從長遠來看,短期內是否會出現固定警告,可能導致薪酬分紅?這樣做通常可以避免哪種運行時錯誤?一般來說,我應該設置我的編譯器將警告視爲錯誤嗎?

+1

什麼是否定的?你將潛在的反*參數作爲錯誤對待所有的警告(無論你是否讓編譯器迫使你,或者你自己做)?這可能怎麼會是一件壞事?否則,這個問題很快會降臨到可怕的「民意測驗」領域。 – 2011-04-05 12:53:23

+0

直到現在我已經完成了,我一直都沒有結束ü p最終建立了零警告,但留下了一些警告,直到後來才讓我馬上起來。最近我一直在使用的一些其他人的項目有更多的東西顯示爲警告,而警告則被視爲錯誤(例如,目標C類中未聲明的選擇器)。我只是好奇,如果有一個商定的最佳做法。 – mbehan 2011-04-06 08:59:44

回答

4

我的看法是,有警告是有原因的,忽視他們在你的危險。雖然有幾個人真的很挑剔,但大部分他們這樣做是出於很好的理由。我寧願讓他們修復和一個很好的乾淨的編譯。

1

我通常解決所有的警告,但不將它們設置爲錯誤...

2

這取決於你認爲什麼是「警告,你可以逃脫。」另外根據您的代碼的未來修改。

我想到的時間越長,我所能得到的警告就越少。

1

一般,是的。

我確定有很多例外。第三方庫頭文件不會以這種方式編譯,但您不想觸摸的是我能想到的最大的頭文件。 (即使這樣,我有時會在#include行周圍使用#pragmas來壓制某些標題中的警告,所以我可以在其餘代碼中保留警告 - 錯誤。)

另一個例外是小型項目;對我來說簡單的經驗法則是如果我需要一個Makefile,那麼它不再是一個小項目,我想得到關於警告,文檔和單元測試的肛門。

0

這也是爲什麼我認爲你應該警告視爲錯誤:

當你有方法的長鏈,其中的東西可以拿出空:

var amount = _client.SnatchLeftoverOrders(_username, _password, "pepperoni").Where(o => o.Ingredients.Any("mushrooms").Where(o => o.Ownersname.ToUpper == _incomingName).Amount(); 

或者類似的東西是很多的地方空例外可能發生。

將這些行放入try/catch中的代碼比添加FirstOrDefaults()然後在!null上進行分支要簡單得多。

如果你有一個catch,你必須做一些事情的異常對象,或者是一個錯誤(如果你正在處理警告視爲錯誤。

這是不戰而勝的「打磨編程」的方式但是它讓事情變得簡單,這些日子裏有太多的保姆事情正在進行中