好吧這原本不在我想像中會說的篇幅範圍內,今天依照我預想的狀況應該是要放GameLoop那篇,但我躺在床上想著那些怎麼處理那些堆積如山的遺留程式碼,一邊隨意地翻閱相關書籍時,我默默地看到了一段這樣的句子
自動重構工具的支援可以讓你無需做任何特殊準備,就可以開始對大方法進行分解…
然後我的忽然驚覺,雖然我確實會用上Visual Studio來做判斷程式寫法正確性跟重新命名的功能,但除此之外的功能我都鮮少使用。結果我大部分的重構動作都是自己手動重構,因此花費了不少時間在做些複製貼上的行為,一不小心還會把程式搞壞。所以我決定痛定思痛,要來認真學一下Visual Studio有哪些常用的重構指令,防止未來又發生這類事情。
但又認真想想,其實好像還可以講些可以比較不需要用滑鼠編輯的鍵盤操作之類的,所以這篇就出現了。
反白跟選取特定程式時、要是有或,可以按ALT + Enter 或 Ctrl + .叫出指令,只能說沒有這功能重構幾乎會變得超困難的事情
不過Ctrl + .在是中文輸入法的情況下會變成叫出逗號,要注意一下
將所有與該名稱一樣來源的名稱改掉
將選取範圍的程式包成一個新的method
可以移動Namespace
還沒改動前
UseableUnitCountSubject.cs
namespace LinXuan.Common.GameEvent
{
public class UseableUnitCountSubject : IGameEventSubject
{
public UnitCountEventArgs UnitCountEventArgs { get; private set; }
public override void SetParameter(object parameter)
{
Notify();
}
}
public class FooGameEventSubject : IGameEventSubject
{
private int m_FooNumber;
}
}
將namespace的名稱反白後按Ctrl+Enter,會跳出Move to Namespece的提示,這時更改為想要的名稱
改動後
UseableUnitCountSubject.cs
namespace LinXuan.Common.GameEvent.Test
{
public class UseableUnitCountSubject : IGameEventSubject
{
public UnitCountEventArgs UnitCountEventArgs { get; private set; }
public override void SetParameter(object parameter)
{
Notify();
}
}
public class FooGameEventSubject : IGameEventSubject
{
private int m_FooNumber;
}
}
快速跳到參考
移動程式碼
反白程式碼
可以快速跳過字符,不用一個字母一個字母選過去
而要是同時長按Shift + Ctrl,在按方向鍵時就有可以快速反白的功能
找程式碼
Keyboard shortcuts in Visual Studio
Working Effectively with Legacy Code中文版:管理、修改、重構遺留程式碼的藝術