我將創建現有的自動化C++重構工具的比較表,並探索創建這種免費和開放源代碼工具的能力。您在實踐中使用了哪些C++重構?
我的問題是:你真正在日常工作中使用什麼樣的重構?有很明顯的事情,比如重命名變量/類/方法,但是有沒有特定於C++的東西,比如處理模板,STL,拷貝構造函數,初始化器等等?
我對構建C++開發人員在編碼中每天面臨的所有小問題的現實感興趣,並且至少在理論上可以自動化。我正在和我的同事們交談,但這可能是不夠的。
在此先感謝。
我將創建現有的自動化C++重構工具的比較表,並探索創建這種免費和開放源代碼工具的能力。您在實踐中使用了哪些C++重構?
我的問題是:你真正在日常工作中使用什麼樣的重構?有很明顯的事情,比如重命名變量/類/方法,但是有沒有特定於C++的東西,比如處理模板,STL,拷貝構造函數,初始化器等等?
我對構建C++開發人員在編碼中每天面臨的所有小問題的現實感興趣,並且至少在理論上可以自動化。我正在和我的同事們交談,但這可能是不夠的。
在此先感謝。
正如你說有明顯的事情:
需要注意的是,雖然這是基本的,它很少會處理好的。我的主要抱怨是評論一般不會更新(我不是在談論doxygen自動生成的無用的混亂)。因此,如果我在頭文件中描述該類的用法,或者在另一個源文件中使用該類的理由,則該評論現已過時,因爲通過重命名該類,現在沒有人會知道它指的是什麼...
然而有更有趣的情況:
好運...
只是重命名很難。想象一下,將我重命名爲J ...在我的聲明和我使用的範圍內有一個J(「shadowing」)。這包括具有多重繼承的介入範圍; J甚至可能不會在實際的介入範圍聲明中顯式出現。請享用。 – 2011-08-17 05:34:25
嗨,我使用http://www.devexpress.com/Products/Visual_Studio_Add-in/RefactorCPP/用這個工具我也重新命名變量/類/方法,改變函數體中,初始化
雖然......這些都是非常基本的東西...... – 2010-11-18 13:18:11
採取Martin Fowler的Refactoring: Improving the Design of Existing Code和Refactoring to Patterns由Joshua Kerievsky看看。這些參考了GoF Design Patterns這本書,所以也是這樣。
如果你可以超越基本的重命名功能和提取功能,那麼你可能會成爲贏家。
這是我昨天提出的C++設計模式:溝策略繼承有利於策略。
我第一次讀到,我提出了*溝渠繼承贊成**政治**。* – 2010-11-18 13:07:00
沒有Alexandrescu在你之前想出它,或者你剛剛意識到政策有多好? – 2010-11-18 13:17:18
策略使用繼承。 – StackedCrooked 2010-11-18 14:36:25
一個重構,我希望得到支持實際上是注入方法。或多或少與提取方法相反。
因爲也許我看到我可以重新排列所產生的代碼以獲得更好的清晰度或效果;但我不知道目前有這方面的工具支持。
從答案中可以清楚地看出,很少有C++程序員見過真正的重構工具。是的,它們對於您使用的IDE來說非常罕見且非常具體。這是不可避免的,否則沒有好辦法找出哪些源代碼文件將代碼貢獻給最終的可執行文件。預處理器使其更具挑戰性,您需要了解宏值。源代碼解析器是必需的,但還不夠。
VS的Visual Assist是我所知道的。
祝你好運,創造一個體面的C++分析器,使這樣一個工具的工作。 – 2010-11-18 11:20:48
當我用C++開發時,我沒有使用IDE的很多重構支持。根本沒有我發現真正有用的東西。我的建議是學習你的設計模式,閱讀Meyer的Effective C++,然後閱讀101編碼標準。學會從一開始就或多或少地做到這一點。 – 2010-11-18 11:28:08
@Daniel:無論程序如何,重構都是開發人員的主要工具。按照KISS的原則,你不會爲了它而潛入模式中,而只是因爲你現在需要的東西而零碎地使用它們......因爲你不是神諭者。 – 2010-11-18 13:15:39