每個開發者都應該知道的設計反模式

閱讀時間約 1 分鐘

軟體開發中,我們經常會遇到各種令人抓狂的設計問題。有時候是趕進度的壓力讓我們妥協了設計品質;有時候是忽略了好的設計原則,結果掉進了各種反模式的坑裡。今天我們來繼續聊聊幾個常見的反模式。


寫死 Hard Code

直接將資料值或邏輯硬寫死在程式碼裡,當需求變更時,修改這些 Hard Code 變得十分麻煩,因為你可能需要在程式碼中到處找那些固定的值。像是在大樓的每個角落藏了不同的開關,想改變某個功能就得翻遍整棟大樓找那個隱藏的開關,讓人崩潰。


船錨 Boat Anchor

系統中留下了不再使用但又沒移除的程式碼或功能,就像系統中的沈重船錨。這些過時的程式碼沒有任何用處,但卻一直佔著資源,卻又沒人敢輕易動它,拖累整個開發進度,讓系統的開發和維護變得更加困難。為什麼這些舊程式碼還在,我們早就不用它了!


重新發明方的輪子 Reinventing the Square Wheel

有時候開發者會為了解決一個問題,自己重新設計某個功能,卻沒有考慮現成的解決方案。結果是寫出來的程式碼比市場上已有的方案還要爛。就像明明有好用的圓形輪子,但你非要自己設計個方的,最後問題更多。


測試人員驅動開發 Tester Driven Development

開發過程完全依賴測試人員來發現問題,然後開發者只是在測試指出的地方修修補補,卻不從根本上解決問題。長此以往,開發變成了一場無止境的救火行動,系統問題不斷,測試和開發之間疲於奔命。測試人員驅動了整個開發過程,而不是依據設計和需求來開發。

    6會員
    83內容數
    對於經營自媒體、部落格或社群媒體感興趣?我專注於提供實用的寫作技巧、數位行銷策略,以及個人成長建議。 每週,我會分享提升寫作技巧、優化部落格經營、有效管理社群媒體、以及投資理財的寶貴知識。追蹤我,獲得實用的工具和建議,讓你的個人品牌和財務管理更上一層樓!
    留言0
    查看全部
    發表第一個留言支持創作者!
    ShengYu的沙龍 的其他內容
    在軟體開發的世界裡,除了有那些「設計模式」能讓我們寫出更乾淨、可擴展的程式碼,也有一些「反模式」,是我們經常不小心掉進去的陷阱。今天就來聊聊那些讓開發者們深受其害的反模式,看你是否曾經踩過這些坑。
    今天想跟大家聊聊軟體開發中那些年大家踩過的「坑」,沒錯,就是那些看不見的陷阱,常常搞得我們焦頭爛額的坑,痛到想哭。 需求改來改去 本來覺得這次的需求挺清楚,覺得「這很簡單,幾天就能搞定」,結果寫完第一個版本,需求就改了。還沒喘口氣,需求又變了!連改了五六次,改到懷疑人生。 會議太多,程
    在軟體開發的日常工作中,技術債 Technical debt 這個詞你一定聽過,很多時候它會在不知不覺中悄悄累積,直到某天徹底爆發,讓開發團隊陷入混亂。技術債其實就像借錢一樣,當我們在開發過程中選擇快速的臨時解法、草率地修補錯誤或忽視程式碼品質,這些行為就像是向未來借來的債務。短期內我們確實能夠快速
    在軟體開發中,過早優化(Premature Optimization)是一個常見陷阱。這個陷阱常常發生在專案的早期階段,開發者過度關注細節或效能問題,試圖讓程式碼跑得更快或佔用更少資源,結果反而忽視了核心功能與可維護性。 什麼是過早優化? 就是你還沒確認程式的效能真的出現瓶頸,卻急著去優化某
    在軟體設計中,常常會遇到這樣的情況:你要改動某個小功能,結果卻發現得改動好幾個不相關的部分,感覺像牽一髮動全身。這時候你可能會懷疑設計是不是出了問題,這種情況往往是類別之間依賴關係過於緊密,導致系統變得難以維護。這就是為什麼我們需要「依賴反轉原則」來解決這種問題。 什麼是依賴反轉原則? 依賴反
    想像你在設計一個系統,而這個系統裡有一個超級大的介面,裡面包含了所有功能。結果每次你只想加一個小功能,卻必須修改這個巨大介面,還要實作你根本不需要的其他功能,這不僅浪費時間,還讓整個系統越來越複雜。 這時候就輪到「介面隔離原則」出場了!這個原則的意思是:「不要強迫一個類別去實作它不需要的功能」
    在軟體開發的世界裡,除了有那些「設計模式」能讓我們寫出更乾淨、可擴展的程式碼,也有一些「反模式」,是我們經常不小心掉進去的陷阱。今天就來聊聊那些讓開發者們深受其害的反模式,看你是否曾經踩過這些坑。
    今天想跟大家聊聊軟體開發中那些年大家踩過的「坑」,沒錯,就是那些看不見的陷阱,常常搞得我們焦頭爛額的坑,痛到想哭。 需求改來改去 本來覺得這次的需求挺清楚,覺得「這很簡單,幾天就能搞定」,結果寫完第一個版本,需求就改了。還沒喘口氣,需求又變了!連改了五六次,改到懷疑人生。 會議太多,程
    在軟體開發的日常工作中,技術債 Technical debt 這個詞你一定聽過,很多時候它會在不知不覺中悄悄累積,直到某天徹底爆發,讓開發團隊陷入混亂。技術債其實就像借錢一樣,當我們在開發過程中選擇快速的臨時解法、草率地修補錯誤或忽視程式碼品質,這些行為就像是向未來借來的債務。短期內我們確實能夠快速
    在軟體開發中,過早優化(Premature Optimization)是一個常見陷阱。這個陷阱常常發生在專案的早期階段,開發者過度關注細節或效能問題,試圖讓程式碼跑得更快或佔用更少資源,結果反而忽視了核心功能與可維護性。 什麼是過早優化? 就是你還沒確認程式的效能真的出現瓶頸,卻急著去優化某
    在軟體設計中,常常會遇到這樣的情況:你要改動某個小功能,結果卻發現得改動好幾個不相關的部分,感覺像牽一髮動全身。這時候你可能會懷疑設計是不是出了問題,這種情況往往是類別之間依賴關係過於緊密,導致系統變得難以維護。這就是為什麼我們需要「依賴反轉原則」來解決這種問題。 什麼是依賴反轉原則? 依賴反
    想像你在設計一個系統,而這個系統裡有一個超級大的介面,裡面包含了所有功能。結果每次你只想加一個小功能,卻必須修改這個巨大介面,還要實作你根本不需要的其他功能,這不僅浪費時間,還讓整個系統越來越複雜。 這時候就輪到「介面隔離原則」出場了!這個原則的意思是:「不要強迫一個類別去實作它不需要的功能」
    你可能也想看
    Google News 追蹤
    Thumbnail
    這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
    Thumbnail
    11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
    Thumbnail
    Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
    Thumbnail
    這篇內容,將會講解什麼是方法,以及與方法相關的知識。包括定義Method、Method Variable 方法變數、跨區使用Method、使用函式時要注意括號。
    Thumbnail
    這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
    Thumbnail
    如果你也是從事軟體相關工作的人,一定會遭遇突然需要你去學習一套你不熟悉的程式語言狀況吧,此時你會怎麼做呢? 是趕快去買書來看嗎? 還是趕快找一門程式課來上? 又或者乾脆去找會的同事來教學?
    Thumbnail
    本章節的目的是介紹在TypeScript中如何進行例外處理。涵蓋了例外處理的重要性、語法、常見異常類型以及如何主動觸發異常訊息及用戶自定義異常訊息。為讀者提供了全面而深入的了解,以提高程式的可靠性、提供更好的反饋、增加程式的容錯性以及改善程式的可讀性。
    ※ 工廠模式 定義: 工廠模式是一種實現了「工廠」概念的物件導向設計模式。它提供一個通用的工廠介面,將創建instance(實例)的程式碼交由子類別各自實現,並根據需求去動態地生成相應的物件。這種模式將物件的創建邏輯與使用邏輯分開,使程式碼更容易維護和擴展。 特點: 具有高度標準化和同質性的
    ※ 單例模式介紹 ※ 定義:單例模式是一種設計模式,確保一個class(類)只有一個實例,並提供一個存取它的全域存取點。無論如何取值,皆只對這個實例取值。 ※ 目的:保證一個類別只會產生一個物件,而且提供存取該物件的統一方法。 ※ 講解:單例模式確保一個類無論怎麼 new 或 get,都只能拿
    Thumbnail
    因為最近想嘗試編碼風格,於是就選了一套比較"不嚴格"的輔助工具來摸索。 編輯器 VS CODE 框架 VUE3 打包工具 VITE 編碼風格 Standard 環境 version { "nodejs":"v18.18.0", "npm":"9.8.1" }
    Thumbnail
    當你在開發程式時,難免會遇到各種錯誤和異常情況。這些錯誤可能是因為代碼中的錯誤、外部資源無法訪問或其他不可預期的狀況。為了提高程式的可靠性、穩定性和可維護性,我們使用「例外處理」來處理這些異常情況。
    讓我在這篇文章總結一下前面對物件導向設計的討論,我們討論了物件導向的四個特性:繼承、抽象、多型、封裝,分析了它們的問題,並跟函數式編程的思維做比較。我們引入了與之相對應的特性:泛型、特性系統、模組化,有些特性雖然跟那四個特性很像,但在一些細微的地方有不同的詮釋,使得整體思考方式很不一樣。 「繼
    Thumbnail
    這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
    Thumbnail
    11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
    Thumbnail
    Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
    Thumbnail
    這篇內容,將會講解什麼是方法,以及與方法相關的知識。包括定義Method、Method Variable 方法變數、跨區使用Method、使用函式時要注意括號。
    Thumbnail
    這篇內容,將會講解什麼是函式,以及與函式相關的知識。包括函式的簡介、Runtime Function、自訂函式、Script Function 腳本函式、Method 方法。
    Thumbnail
    如果你也是從事軟體相關工作的人,一定會遭遇突然需要你去學習一套你不熟悉的程式語言狀況吧,此時你會怎麼做呢? 是趕快去買書來看嗎? 還是趕快找一門程式課來上? 又或者乾脆去找會的同事來教學?
    Thumbnail
    本章節的目的是介紹在TypeScript中如何進行例外處理。涵蓋了例外處理的重要性、語法、常見異常類型以及如何主動觸發異常訊息及用戶自定義異常訊息。為讀者提供了全面而深入的了解,以提高程式的可靠性、提供更好的反饋、增加程式的容錯性以及改善程式的可讀性。
    ※ 工廠模式 定義: 工廠模式是一種實現了「工廠」概念的物件導向設計模式。它提供一個通用的工廠介面,將創建instance(實例)的程式碼交由子類別各自實現,並根據需求去動態地生成相應的物件。這種模式將物件的創建邏輯與使用邏輯分開,使程式碼更容易維護和擴展。 特點: 具有高度標準化和同質性的
    ※ 單例模式介紹 ※ 定義:單例模式是一種設計模式,確保一個class(類)只有一個實例,並提供一個存取它的全域存取點。無論如何取值,皆只對這個實例取值。 ※ 目的:保證一個類別只會產生一個物件,而且提供存取該物件的統一方法。 ※ 講解:單例模式確保一個類無論怎麼 new 或 get,都只能拿
    Thumbnail
    因為最近想嘗試編碼風格,於是就選了一套比較"不嚴格"的輔助工具來摸索。 編輯器 VS CODE 框架 VUE3 打包工具 VITE 編碼風格 Standard 環境 version { "nodejs":"v18.18.0", "npm":"9.8.1" }
    Thumbnail
    當你在開發程式時,難免會遇到各種錯誤和異常情況。這些錯誤可能是因為代碼中的錯誤、外部資源無法訪問或其他不可預期的狀況。為了提高程式的可靠性、穩定性和可維護性,我們使用「例外處理」來處理這些異常情況。
    讓我在這篇文章總結一下前面對物件導向設計的討論,我們討論了物件導向的四個特性:繼承、抽象、多型、封裝,分析了它們的問題,並跟函數式編程的思維做比較。我們引入了與之相對應的特性:泛型、特性系統、模組化,有些特性雖然跟那四個特性很像,但在一些細微的地方有不同的詮釋,使得整體思考方式很不一樣。 「繼