8
A
回答
-2
嘛不直接,但在金錢方面 - 我能說的是。我不能拿出上:)
碼的公式寫得很好,無複雜的(可能是由於重構)可以節省時間/精力,因此錢。
3
這是一個有趣的問題,一個我沒有考慮。我做了一些谷歌搜索,並用此paper對AOP重構(PDF),試圖以某種數學模型適用於各方面,以顯示該功能方面具有相同的靈活性,因爲傳統的方面,但同時降低複雜性上來。我沒有閱讀整篇文章,但你可能會在那裏找到一些東西。
另一個有趣的想法是想沿着相同的路線編譯器優化的重構。本質上,編譯器會即時重構您的代碼,儘管目標不同於代碼級重構。您必須以某種合理的方式量化代碼複雜性和可讀性,以演示特定重構如何影響它。與模型結合可能是困難的部分。
我也發現這個paper,它建立了面向對象編程的代數並導出一些基本規則,然後使用這些基本規則來派生更復雜的重構。
有趣的東西。希望這可以幫助。
2
重構是一系列的正確性保留變換,但重構可能會導致比原來
更一般的代碼,所以我們不能僅僅斷言,在程序P一重構變換T具有相同的屬性R之前,和重構之後,但「重構的程序P」的屬性設定R至少等效於R
given program P implies R
refactoring transformation T(P) produces P'
where (P' implies R') and (R' is equivalent to or subsumes R')
我們也可以斷言,輸入和輸出保持相同或等效
但跟隨你例如,或許我們要定義一個重構變換T爲4元組P,I,O,R,其中P是原始程序,I是輸入和/或前提條件,O是輸出和/或後置條件,以及R爲變換的程序,然後斷言(使用時間邏輯?),其
P:I -> O
改造
T(P) -> R
之前持有定義了改造,並
R:I -> O
改造後持有
我的符號數學生鏽,但是這是一個大方向
這將使一個很好的碩士論文,BTW
2
這可能是有趣的是,大部分的重構功能是成對出現:
- 添加參數 - 刪除參數
- 提取類/方法 - 在線類別/方法
- 上拉字段/方法 - 下拉字段/方法
- 將雙向關聯更改爲單向 - 將雙向關聯更改爲雙向
- ...
應用這兩個對的重構是一個空轉換。
對於重構一對R,R ':
R'(R(代碼))=代碼
相關問題
- 1. 構建定義任務文件模式
- 2. 類和結構的正式定義
- 3. 正則表達式重定義錯誤
- 4. 錯誤:結構沒有定義正確
- 5. 在新的自定義構建任務中重新使用TFS2015的現有構建任務
- 6. 將用戶重定向到適當的頁面不能正確重定向。有任何想法嗎?
- 7. 正則表達式檢測任何重複的字符,但有
- 8. 重複結構定義
- 9. 這是重構給定用戶會話的正確方法嗎?
- 10. 函數定義正確嗎?
- 11. 如何正確定義一個結構
- 12. 如何構建自定義正則表達式
- 13. 是否有任何定義的原子聯合XML模式?
- 14. 它有任何標準的方式來重定向SOAP請求?
- 15. 小黃瓜有任何否定嗎?
- 16. 正則表達式,如何過濾任何@任何:任何@任何沒有'':''?
- 17. 貓鼬 - 重新定義的模式結構
- 18. 自定義wordpress頁面沒有顯示任何樣式
- 19. 正式定義了部分類的「文本順序」嗎?
- 20. 自定義Flex Ant構建任務
- 21. 構造/摧毀自定義gradle任務
- 22. IntelliJ中的簡單自定義重構
- 23. 任何其他方式將連接重定向到自定義IP /端口?
- 24. 需要自定義Ant任務嗎?
- 25. 根據現有的代碼定義正確的結構
- 26. 如何爲所有xmls佈局構建自定義樣式?
- 27. 任何人都可以讓我定義正則表達式的DEFINE斷言文檔嗎?
- 28. 定義正則表達式
- 29. Big Oh Notation - 正式定義
- 30. 是否有任何理由來定義自定義代表?
重新打開並upvoted - 這是一個很好的問題 – 2008-11-19 05:55:09
到底是什麼進攻約這個?一個非常好的問題。 – tvanfosson 2008-11-19 05:57:45
Resonable轉換包括它們自己的先決條件,所以在這個表徵中看起來多餘。 – 2009-09-04 05:15:47