C- Refactory

2003年10月18日

到目前為止,已經出現了許多語言的重構工具。在Smalltalk的帶領下,我們已經看到了幾種Java工具和幾種C#工具。 C++是一種顯而易見缺席的語言,儘管有人呼籲。儘管如此,第一個重構論文的作者是有C++背景的Bill Opdyke

其中有幾個原因,包括C++語言的極端複雜性。然而,這樣的困難並不能長時間阻止那些有決心的人,拉爾夫·約翰遜已決心在UIUC繼續進行重構工作的良好傳統。由於C++非常棘手,從C開始是非常明智的選擇。C避免了一些C++的複雜性,並且有很多可重構的C程序。此外,C與C++共享一些嚴重的挑戰,例如預處理器。

我最近在JAOO上遇到了拉爾夫,他向我介紹了Alejandra Garrido的研究,後者已經接受了C Refactory的挑戰。他的描述主要涉及處理C預處理器的困難,特別是條件編譯和宏。基本問題在於精確的重構操作需要程序的抽象語法樹(AST),但宏將程序文本與AST分開。因此,C重構工具需要構建一個具有宏意識的AST,其中包含將編譯的AST變體。這是一項困難的工作,但Alejandra已經取得了一些成功,包括將Linux內核源代碼作為研究工具測試的一部分。

現在讓全世界的程式設計師都使用工具來重構他們的 C 程式還為時過早,但對於有興趣的人來說,你可能會喜歡參觀 C Refactory 網站。它包含了由 Alejandra 和 Ralph 撰寫的一堆文件,並描述了如何加入郵件列表以獲取更多關於這項工作的資訊。