LeSS in Action - 重構

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

重構的目的

我們之所以會認為重構是一種「任務」是因為想要去消除技術債,然而重構是為了讓下一個功能能夠被持續的加入到產品中所做的修改。
那麼,要如何為「下一次修改」而準備進行重構呢?實際上就是我們在討論的壞味道問題。舉例來說,用最容易注意到的「重複」問題來看,假設我們已經發現了產品中有重複的程式碼可以改寫,如果不進行重構重複使用的話,在下一次的時候可能就會變成複製貼上的實作,並且慢慢的累積出更多重複的部分,最後變成技術債。
當我們有測試、持續整合的協助下,我們可以安心的修改實作在開發中不斷的重構消除掉這些壞味道,那麼我們的程式碼品質就會持續的維持在一個相對高的水準。

重新思考重構

其實,卡住我們重構的一大問題是要做大規模的改寫,同時對測試沒有信心。然而我們從驗收驅動測試的角度開始思考,會注意到我們可以從「使用者直接注意到」的地方開始。
這其實也就是重構的定義中「不改變外部行為的前提下,對內部結構的改善」的處理,當我們從最外層開始思考一層一層的修改,也許重構也沒有想像中那麼的可怕。
因為我們不再需要將完整的功能全部修改,而是以一個功能為單位,一層一層的由上而下(Top-down)的改寫,直到最後就能夠將整個產品中的技術債消除,同時因為我們只關注「功能」的實現,如果沒有要修改的必要也可以先不調整,這樣也明確的限定了重構的範圍,相比過去一但開始就會有一大堆實作要一起調整的狀況,也明確許多。

封面圖片使用 UnsplashEugen Str 的作品,這系列的文章只是課程的一小部分,因此並無法完整涵蓋所有概念以及精神,看關於技術的主題可以到弦而時習之找找靈感。
為什麼會看到廣告
55會員
40內容數
軟體工程師逐漸變成一個熱門的職業,當我們進入這個職業之後應該要具備怎樣的技能才會在工作上更加順利呢?這系列的專欄會分享日常工作中的經驗以及一些案例分析,讓我們一起努力成為一位更優秀的軟體工程師吧!
留言0
查看全部
發表第一個留言支持創作者!
蒼時弦也的沙龍 的其他內容
當我們使用主幹開發(Trunk-based Development)、以及驗收測試驅動開發(A-TDD)之後,所撰寫的程式碼會逐漸的變多,也因此我們會開始注意到程式碼有壞味道(Code Smell)的出現。
不同於我們大多數討論持續整合(Continuous Integration)是以工具為主的議題,在敏捷開發中持續整合更接近於團隊之間協作的議題。這是因為我們希望能夠快速迭代,也因此必須持續的將團隊的產出整合在一起。
當我們能夠通過一個驗收測試後,就是時候將程式碼推送到遠端的服務中。跟基於分支的開發方式不同,我們是以 Trunk-based Development(主幹開發)的方式進行,也就是只有 main 一條分支,並且所有人都會提交進去。
完成對功能的了解之後,我們就要開始進入實現功能的開發階段。跟以往的開發流程不同的是,我們在敏捷開發中注重的是製作有價值的東西。也就是在計畫中,我們獲取的資訊都是對使用者有用、可以被看見以及操作和跨團隊協作的性質。
當我們的衝刺(Sprint)完畢之後,還需要對這一次的衝刺進行評論(Review)以及回顧(Retrospective)來對工作的狀況進行改善。
當我們對敏捷團隊有一些概念後,我們還需要了解在敏捷開發中重要的幾個事件,以及這些事件背後所代表的意義以及整個團隊所能夠做的事情。
當我們使用主幹開發(Trunk-based Development)、以及驗收測試驅動開發(A-TDD)之後,所撰寫的程式碼會逐漸的變多,也因此我們會開始注意到程式碼有壞味道(Code Smell)的出現。
不同於我們大多數討論持續整合(Continuous Integration)是以工具為主的議題,在敏捷開發中持續整合更接近於團隊之間協作的議題。這是因為我們希望能夠快速迭代,也因此必須持續的將團隊的產出整合在一起。
當我們能夠通過一個驗收測試後,就是時候將程式碼推送到遠端的服務中。跟基於分支的開發方式不同,我們是以 Trunk-based Development(主幹開發)的方式進行,也就是只有 main 一條分支,並且所有人都會提交進去。
完成對功能的了解之後,我們就要開始進入實現功能的開發階段。跟以往的開發流程不同的是,我們在敏捷開發中注重的是製作有價值的東西。也就是在計畫中,我們獲取的資訊都是對使用者有用、可以被看見以及操作和跨團隊協作的性質。
當我們的衝刺(Sprint)完畢之後,還需要對這一次的衝刺進行評論(Review)以及回顧(Retrospective)來對工作的狀況進行改善。
當我們對敏捷團隊有一些概念後,我們還需要了解在敏捷開發中重要的幾個事件,以及這些事件背後所代表的意義以及整個團隊所能夠做的事情。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
WWII in less than a minute. Cool video! Zelensky asked: Why did Ukraine start as red? 擇輪司機, 你自己本歷史不去讀, 正死橙!!🤣🤣🤣🤣
Thumbnail
講完了 Story 的拆解 其中提到了 Scope 那麼 Scope 是什麼呢? 以及伴隨著 Scope  很常聽到的 Acceptance Criteria (AC) 又扮演了什麼樣的角色? 0x00 回顧 在系列文章中的第一篇 From Scrum to LeSS — Roles
Thumbnail
當 Story 被確定下來之後 要如何切割 Story  讓他們可以在 Sprint 期間能 Done 過去經驗我們都知道 當 Story 太大的時候要拆小 但問題就來了 小要小到多小 有可能小到 Task 嗎?
從一開始 Story 的出生 就會被放進 Product Backlog 經過漫長的等待 終於在某次的 Sprint 中被提到 Sprint Backlog 接著透過獅子🦁及猿猴🦍們的努力 將 Coffin 轉換成 Code Story 終於蛻變成了 PSPI
Thumbnail
要擺脫受壓榨的人生,最好的方法就是擁有專精的技術。—《做工的人》
Thumbnail
依法不依人。依義不依語。依智不依識。依了義經不依不了義經。 — 釋迦牟尼
Thumbnail
王右軍目陳玄伯;「壘塊有正骨。」 — 世說新語 壘塊是土泥的凝結,這裡係指心中憤積鬱結的意思。王羲之眼中的陳泰,總是義憤填膺,對於政治與社會上不正之事滿懷不平,有著正義凜然的風骨。
Thumbnail
從弗朗特那裡,我知道了什麼是暴君作為。他專制霸道、善於嫉妒、偽善和口是心非,也知道了我們中間那些被稱為上等人的人,一般總是缺乏仁愛之情。 — 奧理略《沈思錄》
Thumbnail
不要急著進場買股,等我指示開始實戰練習,再開始操作。 市場不會跑掉不用擔心。當然我對你並沒有任何強制力,但這是我認為對你最好的建議,你可以選擇聽或不聽。我們今天要談的是價格位階的意義,以及位階的決定方法,也就是「線的畫法」。
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
WWII in less than a minute. Cool video! Zelensky asked: Why did Ukraine start as red? 擇輪司機, 你自己本歷史不去讀, 正死橙!!🤣🤣🤣🤣
Thumbnail
講完了 Story 的拆解 其中提到了 Scope 那麼 Scope 是什麼呢? 以及伴隨著 Scope  很常聽到的 Acceptance Criteria (AC) 又扮演了什麼樣的角色? 0x00 回顧 在系列文章中的第一篇 From Scrum to LeSS — Roles
Thumbnail
當 Story 被確定下來之後 要如何切割 Story  讓他們可以在 Sprint 期間能 Done 過去經驗我們都知道 當 Story 太大的時候要拆小 但問題就來了 小要小到多小 有可能小到 Task 嗎?
從一開始 Story 的出生 就會被放進 Product Backlog 經過漫長的等待 終於在某次的 Sprint 中被提到 Sprint Backlog 接著透過獅子🦁及猿猴🦍們的努力 將 Coffin 轉換成 Code Story 終於蛻變成了 PSPI
Thumbnail
要擺脫受壓榨的人生,最好的方法就是擁有專精的技術。—《做工的人》
Thumbnail
依法不依人。依義不依語。依智不依識。依了義經不依不了義經。 — 釋迦牟尼
Thumbnail
王右軍目陳玄伯;「壘塊有正骨。」 — 世說新語 壘塊是土泥的凝結,這裡係指心中憤積鬱結的意思。王羲之眼中的陳泰,總是義憤填膺,對於政治與社會上不正之事滿懷不平,有著正義凜然的風骨。
Thumbnail
從弗朗特那裡,我知道了什麼是暴君作為。他專制霸道、善於嫉妒、偽善和口是心非,也知道了我們中間那些被稱為上等人的人,一般總是缺乏仁愛之情。 — 奧理略《沈思錄》
Thumbnail
不要急著進場買股,等我指示開始實戰練習,再開始操作。 市場不會跑掉不用擔心。當然我對你並沒有任何強制力,但這是我認為對你最好的建議,你可以選擇聽或不聽。我們今天要談的是價格位階的意義,以及位階的決定方法,也就是「線的畫法」。