[英]Is it worth to insert `const`-correctness
我目前面臨的是由一些高級程序員編寫的C ++項目,該項目由大約400個文件和200個類組成。
代碼精心編寫,工作正常,穩定。
雖然我正在添加一些功能,但對我而言,通常的做法是關注const
-correctness。
但是,如果我開始聲明我的新成員函數const
,那么為了使事情有效,適應舊代碼是沒有盡頭的。
const
-correctness引入此代碼嗎? Const正確性是靜態類型的一種附加層,旨在使開發成熟,可靠和健壯的代碼變得更加容易。 你說你已經有了后者。 在這種情況下,從實用的角度來看,在這樣的代碼庫中強制執行const正確性似乎沒有顯着的附加價值。
這是值得的努力......除非你有更重要的事情要做。
我應該投入大量時間將
const
-correctness引入此代碼嗎?
如果你覺得你可以在合理的時間內完成所有工作,當然。 const
-correctness是一件好事,所以如果你可以調整代碼庫來正確使用它,那么這永遠不會是壞事。
這一切都取決於你有多少時間可用以及你可以做的其他事情,更多的是項目管理,更適合程序員.SE 。
更糟糕的是,我必須觸摸並改變舊的成熟代碼,並向老年人解釋我在代碼審查期間所做的工作。 這值得么?
對他們來說當然是值得的(並且,對於其他人來說)。 聽起來他們會在代碼審查中學到很多東西,這太棒了!
正如molbdnilo正確地指出的那樣,這是一個很大的變化,你應該在開始之前進行小組討論。 這比在兩周后完成代碼審查更合適。
這是一個棘手的問題。 改進const正確性是一項非常重要的工作(正如您所注意到的)。 如果代碼是清潔和可維護的,則可能不應輕易進行。 另一方面,const正確性在某些情況下幾乎是必不可少的 - 或者,如果所有編譯器都強制執行關於不使用臨時初始化對非const的引用的規則。
如果您不是代碼的唯一所有者,那么要做的事情是與其他相關人員討論問題,共同決定是否重要,並在認為重要時編制必要的時間。 你不應該做的只是開始自己介紹它,作為你被強制要做的改變的“副作用”。 這是一個項目層面的決定。
是的,是的。 由於多種原因,const正確性是一件好事,其中有助於防止錯誤。 實際上,我已經在類似於你的情況下應用const正確性時發現了錯誤。
是。 一旦你克服了將當前代碼轉換為const的障礙,它就成了第二天性。
此外,如果您開始遵循像MISRA這樣的規范,它需要您的代碼是正確的(在許多其他事情中)。
強制執行const正確性有兩個技術步驟。
在開始之前,您需要讓您的團隊成員參與進來,並解釋const
-correctness的好處。 如果你無法說服你的隊友,那真的不值得推出......
現在,既然我們使用的是StackOverflow,而不是SE,我寧願專注於技術方法。
這兩個步驟來自以下事實:
const
對象上調用非const
函數 const
函數 因此:
const
那些函數 const
-ify變量/參數/屬性 第一步是非侵入性的並且已經產生了它自己的好處,因為它將防止在標記方法中對類的內部屬性的意外修改。
即使您在團隊中遇到輕微的阻力,您仍然可以標記您開發的方法或觸摸為const
而不會對團隊其他成員造成任何阻礙。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.