我正在參加一個強調使用不變量的中級編程課程。我以前從未使用過它們,它們似乎佔用了更多時間來創作。軟件工程行業是否強調使用不變量?你編程時使用不變量嗎?
5
A
回答
12
取決於你問誰 - 我使用不變量只是因爲它使生活更輕鬆。學習不變式就像學習盲打一樣。每次使用不變量時,您都會對代碼有更多瞭解。如果在循環中插入不變量作爲註釋,它可以幫助讀者很方便。我會說使用不變量可以使源代碼的創建和維護更加便宜,並使您能夠創建更復雜的算法,這些算法仍然可以維護。
與OOP相比,我從來沒有經歷過任何人通過使用不變量浪費時間。
8
我不認爲不變量非常多 - 不如前/後條件。說實話,我應該更多地考慮不變量。
有一點需要考慮的是不變性 - 如果你使用的是面向對象的語言,但是在你可以的地方使類型不可變,你不需要擔心不變量:如果狀態是有效的,將保持有效。
這聽起來像你的課程可能過度強調不變量有點......但它取決於你在做什麼。在某些情況下,他們比其他人更合適。也許你的講師只是他們的忠實粉絲,在他們真正有用的領域擁有豐富的經驗。
3
一旦你瞭解了什麼是不變量以及它們的含義,它就會改變你對代碼的理解方式。我的意思是,我很少寫明確的不變量。但我常常在腦海中想到我寫的代碼中的不變量。這導致你編寫簡單得多的代碼。在大多數情況下,您最終得到的代碼非常簡單,您無需編寫關於不變量的明確評論。然而,不知道不變量的人寫的代碼要複雜得多:)
相關問題
- 1. 當你在as3中編程時,你通常使用類嗎?
- 2. 解決變量,如果你有方程和變量使用Python
- 3. 秒printf不工作時使用變量C編程
- 4. 什麼時候你不想使用@synthesized實例變量?
- 5. 使用全局變量編寫程序更安全嗎?
- 6. 你可以爲一個變量使用多個elifs嗎?
- 7. 你在變量名中使用文章嗎?
- 8. 你應該只在局部使用局部變量嗎?
- 9. 你可以在t4模板中使用全局變量嗎?
- 10. 你可以在C#連接器中使用MySQL @ session變量嗎?
- 11. 你可以在另一個文件中使用#define變量嗎?
- 12. PHP:使用全局變量時會重新定義變量嗎?
- 13. 使用變量時不使用索引
- 14. 你能用javascript改變一個php會話變量嗎?
- 15. 你可以使用count()作爲整個列表而不是一個變量嗎?
- 16. MySQL過程不編譯 - 用變量刪除時出錯
- 17. 我不應該在getter和setter中使用變量變量嗎?
- 18. 你使用應用程序框架嗎?
- 19. 你可以根據請求變量確定時區嗎?
- 20. 你打算使用因子編程語言嗎?
- 21. 你如何在$ _POST中使用變量?
- 22. 你使用什麼分類變量?
- 23. 你是爲了獲利而編程嗎?
- 24. 編程風格:何時添加變量?
- 25. 你使用Phing嗎?
- 26. 你使用NDepend嗎?
- 27. 你使用WaTiR嗎?
- 28. IF使用變量時不起作用
- 29. 如何在不使用變量的情況下編程scala DSL?
- 30. C編程變量在其他變量
不是問題,投票結束 – cletus 2009-11-07 09:07:41
這是非常相關的imo。 「民意測驗」這個詞可能是誤導性的,這個問題可能應該有「我們應該使用不變量?」這個標題嗎?或類似的東西。 – 2009-11-07 09:11:38
你能詳細說明一下你的意思嗎?通過舉一個例子?沒有意識到「不變」的含義,人們可能會使用你正在談論的內容。 – Edmund 2009-11-07 09:26:16