重構的迷思
寫下一行程式碼的時候,就知道總有一天它會被重構掉,也許是你自己也許是別人。
圍場打獵
古時候的每到春天或秋天,皇帝就要進行一次春狩或秋狩活動,該活動就在皇家的圍場中進行。
重構就像一次狩獵活動,程式設計師總會定期的去做,在程式碼腐爛之前。
但別忘了,重構之前先選定你的圍場,劃定你的邊界,系統膨脹到一定程度後進行完全的重構幾乎不可能了,劃定圍場是該活動成功的前提。
一切進入圍場的程式碼就是獵物,活捉亦或殺無赦。
掃雷
劃定圍場後,開始進入前還有一項重要的工作:瞭解其危險性,做好準備。
也許你只打算在圍場中打打野兔、小鹿之類的輕鬆活動,卻不知道里面隱藏著老虎、豹子。
進入狩獵活動前,搞清楚圍場中的雷區,小心的監視中那裡的老虎、豹子,在你做好足夠的準備前不要輕易招惹它們。
高地戰
戰爭中,誰佔有高地,誰就取得了戰場的主動權。
重構是一場戰爭,圍場中的程式碼就是戰場,高地就是關鍵程式碼路徑上的核心業務程式碼。
重構從取得所有制高點開始,才能迅速把握戰場的全部情況。
種下向日葵
《植物大戰殭屍》遊戲中最重要的植物是什麼?向日葵,沒有它就沒法種其他植物來抵禦殭屍來襲。
軟體開發中,一不小心程式設計師就會製造大量的殭屍程式碼或者是讓程式碼變成殭屍的 T 病毒。
向日葵就是專案程式碼的規範,抵禦 T 病毒的疫苗,讓你重構的程式碼都在向日葵製造的太陽的照耀下吧。
大戰殭屍
程式碼庫裡四散著很多小段的,甚至大片大片的被註釋掉的程式碼,這就是殭屍程式碼。
優秀的程式設計師知道,程式碼就是債務,越少越好,殭屍程式碼也是程式碼,它們增加維護的難度、降低信噪比、甚至引發歧義。
最後
說下為什麼重構:對軟體內部結構的一種調整,目的是在不改變軟體可觀察行為的前提下,提高其可理解性,降低其修改成本。
但有時候既有程式碼實在太混亂,重構它還不如重新寫一個來的簡單。
作出這種決定很困難,一直以來我也沒有找到判斷重構還是重寫的清晰分界線。
因此只要劃入圍場的程式碼,既可重構(活捉馴化)也可重寫(殺之),只在當時當刻的當機立斷吧。