簡體   English   中英

是否值得插入`const`-correctness

[英]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函數
  • 你可以在非`constst對象上調用const函數

因此:

  1. 標記為const那些函數
  2. const -ify變量/參數/屬性

第一步是非侵入性的並且已經產生了它自己的好處,因為它將防止在標記方法中對類的內部屬性的意外修改。

即使您在團隊中遇到輕微的阻力,您仍然可以標記您開發的方法或觸摸為const而不會對團隊其他成員造成任何阻礙。

暫無
暫無

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

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