LeSS in Action - 壞味道

閱讀時間約 1 分鐘
當我們使用主幹開發(Trunk-based Development)、以及驗收測試驅動開發(A-TDD)之後,所撰寫的程式碼會逐漸的變多,也因此我們會開始注意到程式碼有壞味道(Code Smell)的出現。

重構與壞味道

在驗收測試驅動開發的方式下,我們每一次的修改都是漸進的。每當一個步驟(Step)完成(Done)時就會進行重構調整,以利於下一個步驟的修改來逐步完成功能。
這也表示,我們有非常多機會重新檢視(Review)之前撰寫過的程式碼,得益於這樣的開發方式,我們很容易會觀察到壞味道的出現,進而將這些可能會造成未來維護困難的地方改善。
除此之外,我們會採用結隊程式設計(Pair Programming)的方式,這讓我們在開發過程中隨時都在 Code Review(程式碼審查)並且更快的發現壞味道。

Top-Down 的視角

在驗收測試驅動開發的方式來看,我們在實現功能的時候是由上而下(Top-Down)的方式,以使用者的角度觀察開始,逐步地完成細節。這樣的方式跟以往我們在開發軟體的方式差異非常大。
以往我們會希望了解系統(或者功能)的全貌,並且完整的設計(Design)所需的類別、介面之後,才開始實現功能。這樣的視角是由下而上(Bottom-up)的方式,我們會像堆積木一樣把每一個零件設計好組裝出來。
然而在敏捷開發中,我們會嘗試先使用最容易的方法(Make it Work)將預期的成果呈現出來,並且逐步的切割成小的零件(Make it Right)。這樣做的好處是,如果沒有需要重複使用,那麼只需要等待需要複用的時候進行重構即可。
基於這樣的理由,我們隨時可以在衝刺(Sprint)結束後重新安排任務,即使功能的細節實作並未完成(Finished)也能夠運作,更容易的對應變化而「敏捷的改變」
重構是為了下一次的修改而準備,當我們的程式碼都是被測試以及可以正確運作時就是有用的程式碼。

封面圖片使用 UnsplashBattlecreek Coffee Roasters 的作品,這系列的文章只是課程的一小部分,因此並無法完整涵蓋所有概念以及精神,看關於技術的主題可以到弦而時習之找找靈感。
為什麼會看到廣告
54會員
40內容數
軟體工程師逐漸變成一個熱門的職業,當我們進入這個職業之後應該要具備怎樣的技能才會在工作上更加順利呢?這系列的專欄會分享日常工作中的經驗以及一些案例分析,讓我們一起努力成為一位更優秀的軟體工程師吧!
留言0
查看全部
發表第一個留言支持創作者!
蒼時弦也的沙龍 的其他內容
不同於我們大多數討論持續整合(Continuous Integration)是以工具為主的議題,在敏捷開發中持續整合更接近於團隊之間協作的議題。這是因為我們希望能夠快速迭代,也因此必須持續的將團隊的產出整合在一起。
當我們能夠通過一個驗收測試後,就是時候將程式碼推送到遠端的服務中。跟基於分支的開發方式不同,我們是以 Trunk-based Development(主幹開發)的方式進行,也就是只有 main 一條分支,並且所有人都會提交進去。
完成對功能的了解之後,我們就要開始進入實現功能的開發階段。跟以往的開發流程不同的是,我們在敏捷開發中注重的是製作有價值的東西。也就是在計畫中,我們獲取的資訊都是對使用者有用、可以被看見以及操作和跨團隊協作的性質。
當我們的衝刺(Sprint)完畢之後,還需要對這一次的衝刺進行評論(Review)以及回顧(Retrospective)來對工作的狀況進行改善。
當我們對敏捷團隊有一些概念後,我們還需要了解在敏捷開發中重要的幾個事件,以及這些事件背後所代表的意義以及整個團隊所能夠做的事情。
在一間採用 Scrum 的公司中工作,勢必要了解敏捷開發是一個怎樣的概念。也因此,我們在分配完畢團隊後,先以團隊為單位安排出我們所理解的「敏捷流程」並且相互對照討論。
不同於我們大多數討論持續整合(Continuous Integration)是以工具為主的議題,在敏捷開發中持續整合更接近於團隊之間協作的議題。這是因為我們希望能夠快速迭代,也因此必須持續的將團隊的產出整合在一起。
當我們能夠通過一個驗收測試後,就是時候將程式碼推送到遠端的服務中。跟基於分支的開發方式不同,我們是以 Trunk-based Development(主幹開發)的方式進行,也就是只有 main 一條分支,並且所有人都會提交進去。
完成對功能的了解之後,我們就要開始進入實現功能的開發階段。跟以往的開發流程不同的是,我們在敏捷開發中注重的是製作有價值的東西。也就是在計畫中,我們獲取的資訊都是對使用者有用、可以被看見以及操作和跨團隊協作的性質。
當我們的衝刺(Sprint)完畢之後,還需要對這一次的衝刺進行評論(Review)以及回顧(Retrospective)來對工作的狀況進行改善。
當我們對敏捷團隊有一些概念後,我們還需要了解在敏捷開發中重要的幾個事件,以及這些事件背後所代表的意義以及整個團隊所能夠做的事情。
在一間採用 Scrum 的公司中工作,勢必要了解敏捷開發是一個怎樣的概念。也因此,我們在分配完畢團隊後,先以團隊為單位安排出我們所理解的「敏捷流程」並且相互對照討論。
你可能也想看
Thumbnail
「設計不僅僅是外觀和感覺。設計是其運作的方式。」 — Steve Jobs 身為一個獨立文案,許多人會以為我們的生活只需要面對電腦,從無到有,用精巧的文字填滿空白的螢幕,呈現心目中獨具風格的作品。 ——有的時候可以如此,但其實這是我們夢寐以求的偶發日常。 更多的時候,白天的工作時間總被各種繁雜
Thumbnail
台股、美股近期明顯回檔,市場敘事發生改變,壞消息一樁接一樁出現,下一步該怎麼走呢?本文將探討近期的宏觀經濟事件,並分享個人的操作思考。
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
「設計不僅僅是外觀和感覺。設計是其運作的方式。」 — Steve Jobs 身為一個獨立文案,許多人會以為我們的生活只需要面對電腦,從無到有,用精巧的文字填滿空白的螢幕,呈現心目中獨具風格的作品。 ——有的時候可以如此,但其實這是我們夢寐以求的偶發日常。 更多的時候,白天的工作時間總被各種繁雜
Thumbnail
台股、美股近期明顯回檔,市場敘事發生改變,壞消息一樁接一樁出現,下一步該怎麼走呢?本文將探討近期的宏觀經濟事件,並分享個人的操作思考。
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
不要急著進場買股,等我指示開始實戰練習,再開始操作。 市場不會跑掉不用擔心。當然我對你並沒有任何強制力,但這是我認為對你最好的建議,你可以選擇聽或不聽。我們今天要談的是價格位階的意義,以及位階的決定方法,也就是「線的畫法」。