2012-05-17 43 views
2

我知道已經有一個數字是否破發的討論,並繼續應普遍認爲是有害的(有底線的存在 - 或多或少 - 它依賴;在某些情況下,它們提高了清晰度和可讀性,但在其他情況下則不然)。「繼續」,「分化」的靜態分析

假設一個新項目開始發展,與每晚構建包括通過靜態分析儀運行的計劃。是否應該成爲項目編碼準則的一部分,以避免(或強烈阻止)使用continuebreak,即使它可以犧牲一點可讀性並需要過度縮進?我最感興趣的是這如何適用於C代碼。

從本質上講,可以使用這些控制操作的顯著可能導致額外的假陰性的代碼靜態分析複雜化,否則將註冊一個潛在的故障,如果中斷或者繼續不習慣?

(當然,一個完整的靜態分析證明了aribtrary程序的正確性是不可判定的命題,所以請保持迴應任何動手有了這個,你有,而不是理論上的不可能性經驗)

謝謝提前!

+1

這種問題更適合在程序員(programmers.stackexchange.com)論壇,而不是在stackoverflow我認爲... – aleroot

+0

從我[有限]的經驗,程序員SE通常不會提供相同的詳細技術反應是否這樣,這就是爲什麼我認爲這將是一個更好的選擇。有沒有辦法讓我在那邊遷移,而不是交叉發佈? –

回答

2

我的直接反應是,你必須跳過的箍環,以避免breakcontinue可能會損害整個代碼,並使靜態分析(或其他許多事情)更困難。

這將取決於你正在處理的代碼,雖然確切的排序位。只是舉例來說,如果你有一些真的會爲switch語句最佳實施,對break禁止將基本上強迫你使用嵌套if/else S的會使得更加難以代碼正確分析,並根據情況,也很可能會對輸出代碼產生負面影響。

+0

許多嵌套的'if' /'else's可能需要更多時間才能解析,但是我認爲它對於靜態分析器來說要簡單得多嗎? –

+0

@ B.VB .:如果你正在編寫你自己的靜態分析器,如果你遺漏了一些語言特性,可能會更簡單一點,是的。對於現有的靜態分析儀,這不太可能產生真正的差異。如果你確實想簡化語言,那麼這些可能不是開始的正確地方。 –

+0

+1。如果您正在編寫自己的靜態分析工具,並希望簡化C++以使您的(其他)工作更輕鬆,那麼爲何不棄用需要更多工作來實現的類,函數和所有其他功能?使用現有的工具,不要切斷你的右臂來幫助你的左手。 –