2009-11-07 70 views
5

我正在參加一個強調使用不變量的中級編程課程。我以前從未使用過它們,它們似乎佔用了更多時間來創作。軟件工程行業是否強調使用不變量?你編程時使用不變量嗎?

+0

不是問題,投票結束 – cletus 2009-11-07 09:07:41

+1

這是非常相關的imo。 「民意測驗」這個詞可能是誤導性的,這個問題可能應該有「我們應該使用不變量?」這個標題嗎?或類似的東西。 – 2009-11-07 09:11:38

+0

你能詳細說明一下你的意思嗎?通過舉一個例子?沒有意識到「不變」的含義,人們可能會使用你正在談論的內容。 – Edmund 2009-11-07 09:26:16

回答

12

取決於你問誰 - 我使用不變量只是因爲它使生活更輕鬆。學習不變式就像學習盲打一樣。每次使用不變量時,您都會對代碼有更多瞭解。如果在循環中插入不變量作爲註釋,它可以幫助讀者很方便。我會說使用不變量可以使源代碼的創建和維護更加便宜,並使您能夠創建更復雜的算法,這些算法仍然可以維護。

與OOP相比,我從來沒有經歷過任何人通過使用不變量浪費時間。

8

我不認爲不變量非常多 - 不如前/後條件。說實話,我應該更多地考慮不變量。

有一點需要考慮的是不變性 - 如果你使用的是面向對象的語言,但是在你可以的地方使類型不可變,你不需要擔心不變量:如果狀態是有效的,將保持有效。

這聽起來像你的課程可能過度強調不變量有點......但它取決於你在做什麼。在某些情況下,他們比其他人更合適。也許你的講師只是他們的忠實粉絲,在他們真正有用的領域擁有豐富的經驗。

3

一旦你瞭解了什麼是不變量以及它們的含義,它就會改變你對代碼的理解方式。我的意思是,我很少寫明確的不變量。但我常常在腦海中想到我寫的代碼中的不變量。這導致你編寫簡單得多的代碼。在大多數情況下,您最終得到的代碼非常簡單,您無需編寫關於不變量的明確評論。然而,不知道不變量的人寫的代碼要複雜得多:)