LeSS in Action - 壞味道

更新於 發佈於 閱讀時間約 3 分鐘

當我們使用主幹開發(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 的作品,這系列的文章只是課程的一小部分,因此並無法完整涵蓋所有概念以及精神,看關於技術的主題可以到弦而時習之找找靈感。

留言
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
TOMICA第一波推出吉伊卡哇聯名小車車的時候馬上就被搶購一空,一直很扼腕當時沒有趕緊入手。前陣子閒來無事逛蝦皮,突然發現幾家商場都又開始重新上架,價格也都回到正常水準,估計是官方又再補了一批貨,想都沒想就立刻下單! 同文也跟大家分享近期蝦皮購物紀錄、好用推薦、蝦皮分潤計畫的聯盟行銷!
Thumbnail
TOMICA第一波推出吉伊卡哇聯名小車車的時候馬上就被搶購一空,一直很扼腕當時沒有趕緊入手。前陣子閒來無事逛蝦皮,突然發現幾家商場都又開始重新上架,價格也都回到正常水準,估計是官方又再補了一批貨,想都沒想就立刻下單! 同文也跟大家分享近期蝦皮購物紀錄、好用推薦、蝦皮分潤計畫的聯盟行銷!
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
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
當我們能夠通過一個驗收測試後,就是時候將程式碼推送到遠端的服務中。跟基於分支的開發方式不同,我們是以 Trunk-based Development(主幹開發)的方式進行,也就是只有 main 一條分支,並且所有人都會提交進去。
Thumbnail
當我們能夠通過一個驗收測試後,就是時候將程式碼推送到遠端的服務中。跟基於分支的開發方式不同,我們是以 Trunk-based Development(主幹開發)的方式進行,也就是只有 main 一條分支,並且所有人都會提交進去。
Thumbnail
完成對功能的了解之後,我們就要開始進入實現功能的開發階段。跟以往的開發流程不同的是,我們在敏捷開發中注重的是製作有價值的東西。也就是在計畫中,我們獲取的資訊都是對使用者有用、可以被看見以及操作和跨團隊協作的性質。
Thumbnail
完成對功能的了解之後,我們就要開始進入實現功能的開發階段。跟以往的開發流程不同的是,我們在敏捷開發中注重的是製作有價值的東西。也就是在計畫中,我們獲取的資訊都是對使用者有用、可以被看見以及操作和跨團隊協作的性質。
Thumbnail
初學程式時認為寫程式是在跟機器溝通,它懂了、可以動了,我的目的達成了,結案!然而大多時候,光是連編譯器吐出來的錯誤訊息都看不懂,更別說是考慮自己寫出來的程式碼的可讀性,而且專案太小也感覺不出維護上的困難。
Thumbnail
初學程式時認為寫程式是在跟機器溝通,它懂了、可以動了,我的目的達成了,結案!然而大多時候,光是連編譯器吐出來的錯誤訊息都看不懂,更別說是考慮自己寫出來的程式碼的可讀性,而且專案太小也感覺不出維護上的困難。
Thumbnail
從測試方法的名字中可以很輕鬆的了解到,TDD(測試驅動開發)的前提就是先寫測試,然後再去開發我們的系統。要達成這樣的條件,就會需要有明確的規格才能夠實行。
Thumbnail
從測試方法的名字中可以很輕鬆的了解到,TDD(測試驅動開發)的前提就是先寫測試,然後再去開發我們的系統。要達成這樣的條件,就會需要有明確的規格才能夠實行。
Thumbnail
大多數的工程師常常會有一個疑問,就是「測試」應該要怎麼測試才是正確的?在過去,軟體測試大多還是以人工為主,在這幾年逐漸的出現自動化測試之後,實際上我們是不清楚應該要怎麼寫測試。
Thumbnail
大多數的工程師常常會有一個疑問,就是「測試」應該要怎麼測試才是正確的?在過去,軟體測試大多還是以人工為主,在這幾年逐漸的出現自動化測試之後,實際上我們是不清楚應該要怎麼寫測試。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News