程式寫的好與寫的不好,其實一直很難去定義出來。雖然可以透過一些Quality attribute以及相關的KPI來決定所謂的品質,但卻很難去解釋怎麼樣的寫法,會...
從重構的v1開始,介紹了原型糾結版,怎麼樣從糾結成一團的程式碼,將UI、Service與Dao的觀念獨立開來(請參考:重構– UI, Business logi...
前面提到了許多篇重構的方式,都是偏向pattern或較大面向的設計重構,在面對比較大的系統包袱時,或許大家比較沒法子運用的得心應手,所以接下來會穿插一些誰都可以...
很開心又邀請到一位高手來分享經驗,帶領大家實作。 相同的北風資料庫,從Web Form如何轉換成MVC呢? 這一天會讓您動手實戰,親身體會。 課前須知: 希望是...
上一篇文章,介紹了重構的第一步,就是建立測試。跨出了這第一步,才能確保後面的重構動作不會影響到結果。這也是為什麼本系列文章,需要先介紹測試的技巧、目的以及方式。...
本篇文章接著上一篇的[如何提升系統品質-Day2]重構– UI, Business logic, Data access概念分開,繼續往下重構。 現實是殘酷的,...
上次v3版本,我們將Entity, Service, Dao, Utility都放到了類別庫裡面,讓我們可以輕鬆的在不同專案中用同一份組件。雖然文章沒有獲得太多...
到上一篇文章為止,TDD中所需具備的基本測試知識,已經告一段落。 接下來要練習的,是重構的手法。 接下來幾篇文章,會跟各位讀者朋友介紹: 要怎麼找到需要重構的...
在上一篇文章中,重構第五式:「給你錢,趕快做」中,重點在於如何站在當下物件的角度,去思考自身職責該處理的邏輯,並思考非自身職責的部分,該委託給哪一個物件來處理。...
上一篇文章中,介紹了如何透過一些靜態程式碼分析的工具,搭配品質指標的門檻,來快速找到系統中需要重構的程式。 也稍微的介紹了,重構目標的程式基本功能與樣式。 這一...
上一篇的[如何提升系統品質-Day3]重構– DRY & Top-Down思考方式(1)文章因為篇幅限制,所以這一篇會將最後的幾個步驟完成,並看到重構後...
之前有提到,應該要抽象地去思考與設計程式。面對既存在的程式碼也是如此,如果看到的只是『一行一行』的程式碼,那就只是『見山是山』的程度。 許多好的軟體公司,都有c...
這次的目標一樣是用抽象地角度來看我們的程式碼,用人類的話來解釋程式碼的目的與行為,並且避免重複的程式碼出現。 [如何提升系統品質]系列文章連結 需求說明 我們有...
在上篇文章中,我們將各個物流商的物件,抽象化出來一個物流商的介面,這個介面提供了當下頁面物件所需要的功能: 計算運費 取得運費結果 取得物流商名稱 雖然頁面...
上一篇文章中,將原本散落在頁面,屬於物流商職責的部分,搬移填入到物流商的物件中,並且通過了最原始的Selenium測試,代表符合了使用者的需求。也通過了單元測試...
今天要分享的部分,是把一陀很類似卻又攤在程式碼中的判斷式,想辦法抽象化。例子會有點像[如何提升系統品質-Day8]重構-簡化判斷式,但相信這次舉的例子會更貼近大...
在上一篇文章中,介紹了先透過理解程式碼,加上註解與排版後,讓我們看了程式碼心情不會再這麼不爽。 也因為抽象思考完,用自己的話在註解來描述程式碼的目的與行為,所以...
WEB 程式重構 你接手的案子,是不是剪不斷理還亂?看到就想砍掉重練呢? 但是從頭再來卻又不能保證功能一模一樣,而且老闆也不一定會給你時間。 除了擺爛讓網站程式...
開始要求自己的程式碼的乾淨與可視程度之後被前輩推薦了一本書接下來幾天會以這本書為主的閱讀筆記,筆記會節錄書中的片段文章有興趣的朋友可以買來看看,這本書真的蠻不錯...
在上一篇文章中,透過分離主詞與動詞,定義出其他的物件與對應的行為,將不屬於當下物件的職責,拆分到其他的物件上。 在拆物件的過程中,還是一再強調,我們要把關注點放...
從[Day 9]開始,一直到[Day 18],我們從最初不知道從哪開始重構,到現在程式碼變得高內聚、低耦合、可擴充、可讀、可維護,而且有了相關的測試保護,不再需...
前兩篇文章,我們先以當下物件的角度,思考屬於自己的職責是什麼。而不屬於自己職責的部份,該委託給哪個物件來進行。並思考清楚當下物件所需要的,究竟是什麼,接著不必去...
上篇文章透過簡單的重構一個function,將相同的部份抽出判斷式外,讓不同的部份影響範圍最低。因此解決了我們有著重複程式碼的問題。 更重要的是,透過這一個過程...
第三章 編寫較佳的CSS 善用註解 註解可以幫助自己檢視自己之前所寫的程式碼或是段落說明應該加上註解的部分包括: 檔案內容 選取器的相依性與用法等 為何要如此...
第四章 為不同類型的樣式分類 樣式分類的重要性 網頁可以被視為是用來呈現資訊的文件集,也能被視為一套複雜的應用程式這兩種面像都需要具語意的HTML標籤來描述要呈...
第二章 瞭解串接 什麼是串接? 串接(cascade) 是瀏覽器用來決定樣式如何套用到元素上的方法。有許多樣式可以套用到同一個元素上,當樣式沒有依照預期的方法被...
高效選擇器 簡單選擇器的效能會比複雜選擇器的效能要好,簡單的選擇器應該優先被使用這是因為他比較容易被重複使用與理解而不是因為他們比較有效率。 由右向左比對選擇器...
本系列文章已集結成冊與鐵人賽文章差異內容,有以下幾點: 更新至Laravel 8、基礎的PHP重點筆記、加強製作API流程細節、加入程式設計模式,優化、重構...
以幾種瀏覽器進行測試 在不同瀏覽器上檢測CSS最常見的方法是以手動方式進行測試目前主流的瀏覽器有 Google Chrome Firefox Safari M...
錨點標籤 錨點標籤(anchor tags)提供可連到其他HTML文件或同一份HTML文件中段落的連結能搭配常用來顯示狀態:link、:visited、:foc...