LeSS in Action - 重構

更新 發佈閱讀 2 分鐘

我們已經了解到了驗收驅動開發持續整合以及壞味道這幾個概念,要減少技術債的方式就是重構,然而在實踐重構的時候並非我們所想像的必須「安排時間」重構,而是在開發的過程中不斷的進行。

重構的目的

我們之所以會認為重構是一種「任務」是因為想要去消除技術債,然而重構是為了讓下一個功能能夠被持續的加入到產品中所做的修改。

那麼,要如何為「下一次修改」而準備進行重構呢?實際上就是我們在討論的壞味道問題。舉例來說,用最容易注意到的「重複」問題來看,假設我們已經發現了產品中有重複的程式碼可以改寫,如果不進行重構重複使用的話,在下一次的時候可能就會變成複製貼上的實作,並且慢慢的累積出更多重複的部分,最後變成技術債。

當我們有測試、持續整合的協助下,我們可以安心的修改實作在開發中不斷的重構消除掉這些壞味道,那麼我們的程式碼品質就會持續的維持在一個相對高的水準。

重新思考重構

其實,卡住我們重構的一大問題是要做大規模的改寫,同時對測試沒有信心。然而我們從驗收驅動測試的角度開始思考,會注意到我們可以從「使用者直接注意到」的地方開始。

這其實也就是重構的定義中「不改變外部行為的前提下,對內部結構的改善」的處理,當我們從最外層開始思考一層一層的修改,也許重構也沒有想像中那麼的可怕。

因為我們不再需要將完整的功能全部修改,而是以一個功能為單位,一層一層的由上而下(Top-down)的改寫,直到最後就能夠將整個產品中的技術債消除,同時因為我們只關注「功能」的實現,如果沒有要修改的必要也可以先不調整,這樣也明確的限定了重構的範圍,相比過去一但開始就會有一大堆實作要一起調整的狀況,也明確許多。


封面圖片使用 UnsplashEugen Str 的作品,這系列的文章只是課程的一小部分,因此並無法完整涵蓋所有概念以及精神,看關於技術的主題可以到弦而時習之找找靈感。


留言
avatar-img
留言分享你的想法!
avatar-img
蒼時弦也的沙龍
55會員
40內容數
軟體工程師逐漸變成一個熱門的職業,當我們進入這個職業之後應該要具備怎樣的技能才會在工作上更加順利呢?這系列的專欄會分享日常工作中的經驗以及一些案例分析,讓我們一起努力成為一位更優秀的軟體工程師吧!
蒼時弦也的沙龍的其他內容
2022/07/04
因為經常有面試人的機會,然而在不同的面試條件中有一個「Problem Solving」的項目讓我一直在思考代表怎樣的意義,剛好在 LeSS in Action 的課程中有了一些想法。
Thumbnail
2022/07/04
因為經常有面試人的機會,然而在不同的面試條件中有一個「Problem Solving」的項目讓我一直在思考代表怎樣的意義,剛好在 LeSS in Action 的課程中有了一些想法。
Thumbnail
2022/06/27
這系列大概花了快兩個月的時間快速的把學到的一些知識記錄下來,然而還是有許多內容很難用文章簡單的說明。
Thumbnail
2022/06/27
這系列大概花了快兩個月的時間快速的把學到的一些知識記錄下來,然而還是有許多內容很難用文章簡單的說明。
Thumbnail
2022/06/20
雖然這系列的課程是設計給工程師的,然而在學習敏捷開發(Scrum 為主)的過程中,我們是從如何做「產品」的角度去做切入,也因此在課程接近尾聲的時候我們再次討論了產品跟專案的差異,也是這一週課程中各種安排的理由所在。
Thumbnail
2022/06/20
雖然這系列的課程是設計給工程師的,然而在學習敏捷開發(Scrum 為主)的過程中,我們是從如何做「產品」的角度去做切入,也因此在課程接近尾聲的時候我們再次討論了產品跟專案的差異,也是這一週課程中各種安排的理由所在。
Thumbnail
看更多
你可能也想看
Thumbnail
在小小的租屋房間裡,透過蝦皮購物平臺採購各種黏土、模型、美甲材料等創作素材,打造專屬黏土小宇宙的療癒過程。文中分享多個蝦皮挖寶地圖,並推薦蝦皮分潤計畫。
Thumbnail
在小小的租屋房間裡,透過蝦皮購物平臺採購各種黏土、模型、美甲材料等創作素材,打造專屬黏土小宇宙的療癒過程。文中分享多個蝦皮挖寶地圖,並推薦蝦皮分潤計畫。
Thumbnail
小蝸和小豬因購物習慣不同常起衝突,直到發現蝦皮分潤計畫,讓小豬的購物愛好產生價值,也讓小蝸開始欣賞另一半的興趣。想增加收入或改善伴侶間的購物觀念差異?讓蝦皮分潤計畫成為你們的神隊友吧!
Thumbnail
小蝸和小豬因購物習慣不同常起衝突,直到發現蝦皮分潤計畫,讓小豬的購物愛好產生價值,也讓小蝸開始欣賞另一半的興趣。想增加收入或改善伴侶間的購物觀念差異?讓蝦皮分潤計畫成為你們的神隊友吧!
Thumbnail
本文深入探討代碼重構的定義、原因以及操作步驟。代碼重構不僅是整理代碼,還是專案優化的關鍵。隨著需求變更和人員調動,專案面臨無形傷害,因此進行代碼重構能改進軟體設計,提高工作效率,並降低未來的開發成本。透過解決重複代碼、過長函式、過大類別等問題,最終提升專案穩定性和用戶體驗。
Thumbnail
本文深入探討代碼重構的定義、原因以及操作步驟。代碼重構不僅是整理代碼,還是專案優化的關鍵。隨著需求變更和人員調動,專案面臨無形傷害,因此進行代碼重構能改進軟體設計,提高工作效率,並降低未來的開發成本。透過解決重複代碼、過長函式、過大類別等問題,最終提升專案穩定性和用戶體驗。
Thumbnail
軟體開發是在虛擬的空間重新描述並解決現時的問題,多數時候並不存在正確答案。如何穿越這些不確定及未知就體現了開發者的功力以及對事物的把握度。 標題有點聳動,但且以這篇短文紀錄幾個印象比較深的、飛一陣後發現什麼節論都沒得到的可能作法(? 所以其實是要反著看 … 以下列舉三個常碰到的情況跟大家分享
Thumbnail
軟體開發是在虛擬的空間重新描述並解決現時的問題,多數時候並不存在正確答案。如何穿越這些不確定及未知就體現了開發者的功力以及對事物的把握度。 標題有點聳動,但且以這篇短文紀錄幾個印象比較深的、飛一陣後發現什麼節論都沒得到的可能作法(? 所以其實是要反著看 … 以下列舉三個常碰到的情況跟大家分享
Thumbnail
這系列大概花了快兩個月的時間快速的把學到的一些知識記錄下來,然而還是有許多內容很難用文章簡單的說明。
Thumbnail
這系列大概花了快兩個月的時間快速的把學到的一些知識記錄下來,然而還是有許多內容很難用文章簡單的說明。
Thumbnail
雖然這系列的課程是設計給工程師的,然而在學習敏捷開發(Scrum 為主)的過程中,我們是從如何做「產品」的角度去做切入,也因此在課程接近尾聲的時候我們再次討論了產品跟專案的差異,也是這一週課程中各種安排的理由所在。
Thumbnail
雖然這系列的課程是設計給工程師的,然而在學習敏捷開發(Scrum 為主)的過程中,我們是從如何做「產品」的角度去做切入,也因此在課程接近尾聲的時候我們再次討論了產品跟專案的差異,也是這一週課程中各種安排的理由所在。
Thumbnail
我們已經了解到了驗收驅動開發、持續整合以及壞味道這幾個概念,要減少技術債的方式就是重構,然而在實踐重構的時候並非我們所想像的必須「安排時間」重構,而是在開發的過程中不斷的進行。
Thumbnail
我們已經了解到了驗收驅動開發、持續整合以及壞味道這幾個概念,要減少技術債的方式就是重構,然而在實踐重構的時候並非我們所想像的必須「安排時間」重構,而是在開發的過程中不斷的進行。
Thumbnail
當我們使用主幹開發(Trunk-based Development)、以及驗收測試驅動開發(A-TDD)之後,所撰寫的程式碼會逐漸的變多,也因此我們會開始注意到程式碼有壞味道(Code Smell)的出現。
Thumbnail
當我們使用主幹開發(Trunk-based Development)、以及驗收測試驅動開發(A-TDD)之後,所撰寫的程式碼會逐漸的變多,也因此我們會開始注意到程式碼有壞味道(Code Smell)的出現。
Thumbnail
完成對功能的了解之後,我們就要開始進入實現功能的開發階段。跟以往的開發流程不同的是,我們在敏捷開發中注重的是製作有價值的東西。也就是在計畫中,我們獲取的資訊都是對使用者有用、可以被看見以及操作和跨團隊協作的性質。
Thumbnail
完成對功能的了解之後,我們就要開始進入實現功能的開發階段。跟以往的開發流程不同的是,我們在敏捷開發中注重的是製作有價值的東西。也就是在計畫中,我們獲取的資訊都是對使用者有用、可以被看見以及操作和跨團隊協作的性質。
Thumbnail
初學程式時認為寫程式是在跟機器溝通,它懂了、可以動了,我的目的達成了,結案!然而大多時候,光是連編譯器吐出來的錯誤訊息都看不懂,更別說是考慮自己寫出來的程式碼的可讀性,而且專案太小也感覺不出維護上的困難。
Thumbnail
初學程式時認為寫程式是在跟機器溝通,它懂了、可以動了,我的目的達成了,結案!然而大多時候,光是連編譯器吐出來的錯誤訊息都看不懂,更別說是考慮自己寫出來的程式碼的可讀性,而且專案太小也感覺不出維護上的困難。
Thumbnail
當你idea的解析度已經夠高了,我們就進到了「重組」的房間。在前面漫想的過程中,可能會遇到一個問題:「這個點子可能有人做過了吧?」這時我們可以站在他人的角度來看自己原有的主觀構想,再結合自己的世界觀把它打磨成更加獨特的概念。在這裡你可以思考不同的排列組合,把構想拆得更細,透過這個過程提升漫想的高度。
Thumbnail
當你idea的解析度已經夠高了,我們就進到了「重組」的房間。在前面漫想的過程中,可能會遇到一個問題:「這個點子可能有人做過了吧?」這時我們可以站在他人的角度來看自己原有的主觀構想,再結合自己的世界觀把它打磨成更加獨特的概念。在這裡你可以思考不同的排列組合,把構想拆得更細,透過這個過程提升漫想的高度。
Thumbnail
正在執行開發的進度,往往是還沒解決這個又來下一個,頓時覺得人生怎麼不是樸實無華,而是好難。
Thumbnail
正在執行開發的進度,往往是還沒解決這個又來下一個,頓時覺得人生怎麼不是樸實無華,而是好難。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News