iT邦幫忙

code smell相關文章
共有 48 則文章
鐵人賽 Software Development DAY 9

技術 Day 09|每加一種類型就多畫一筆的素描:Switch 陳述式 (Switch Statements)

中世紀的畫,人物常常是「該重要的畫大一點」國王比隨從大,聖人比信徒大,畫面熱鬧,卻沒有一致的空間邏輯 達文西的手稿裡,留下大量人體解剖圖、光影角度計算、透視...

鐵人賽 Software Development DAY 8

技術 Day 08|退到工地外,看圓頂的比例:五個警訊,同時出現先修哪一個?

磚一圈一圈砌了五天,布魯內雷斯基會做一件事走到教堂外面,退到廣場另一頭,抬頭看整座圓頂的輪廓對不對稱 近看,每一圈磚都合格;但只有退遠一點,才看得出比例有沒...

鐵人賽 Software Development DAY 7

技術 Day 07|總是結伴出現卻沒有名字的三兄弟:資料泥團 (Data Clumps)

工匠採買磚頭,從來不是單獨算一塊一塊的價錢。磚的種類、數量、要送去哪一圈。 這三件事,永遠是一起被記在同一張採購單上 沒有人會把「數量」單獨記在一本帳,「種類」...

鐵人賽 Software Development DAY 5

技術 Day 05|沒有模具的工地:原始型別執念 (Primitive Obsession)

圓頂的曲線,不是每一位工匠憑感覺砌出來的布魯內雷斯基替不同高度的每一圈磚,都準備了專屬的木製模具(centina) 工匠不需要自己判斷「這一圈該彎多少」,只要照...

鐵人賽 Software Development DAY 4

技術 Day 04|身兼一切的工地主任:巨大類別 (Large Class)

蓋一座圓頂,需要的角色其實很多 有人決定結構怎麼設計 有人管磚頭、木料怎麼採購 有人算工錢、記帳 有人監督工地現場的安全與進度 佛羅倫斯教堂的營建委員會...

鐵人賽 Software Development DAY 3

技術 Day 03|一氣呵成的迷思:過長方法 (Long Method)

昨天,我們把五條規矩刻上了畫室門楣今天,第一次套進具體場景 1296 年,佛羅倫斯開始蓋聖母百花大教堂,八角形的底座很早就完成了,唯獨中間那個洞留給圓頂的位置,...

鐵人賽 Software Development DAY 2

技術 Day 02|行會規範:畫室開工前,刻在門楣上的五條規矩(SOLID)

在任何一位學徒被允許碰畫筆之前,畫室的門楣上,早就刻好了五條規矩(SOLID)不是技法,不是配色,是更底層的東西「一幅畫該怎麼分工、一個角色該扛多少責任、換人代...

鐵人賽 Software Development DAY 1

技術 Day 01|文藝復興宣言:當 AI 開始寫程式,誰來守住工藝?

抄得快,不代表抄得對畫得多,不代表畫得好程式碼跑得動,不代表它值得留到明天 AI 可以在三秒內生出一百行程式碼,但沒有一行程式碼會在三秒內告訴你,它三個月後...

鐵人賽 Software Development DAY 30
消除你程式碼的臭味 系列 第 30

技術 Day 30- 總結:從好品味到好架構的終極實踐清單

消除你程式碼的臭味 Day 30- 總結:從好品味到好架構的終極實踐清單 提升程式碼的品質,就像培養品味一樣,不是與生俱來的天賦,而是透過一次又一次正確的取捨...

鐵人賽 Software Development DAY 21
消除你程式碼的臭味 系列 第 21

技術 Day 21- 註解:讓程式碼自己說話

消除你程式碼的臭味 Day 21- 註解:讓程式碼自己說話 好的程式碼不需要註解,因為程式碼本身就能被讀懂。 程式碼本身,才是唯一的、絕對的事實來源。註解不是...

鐵人賽 Software Development DAY 18
消除你程式碼的臭味 系列 第 18

技術 Day 18- 狀態管理:用資料定義流程

消除你程式碼的臭味 Day 18- 狀態管理:用資料定義流程 狀態機不該是 if/else 的迷宮,它的本質是一張規則流程表。 把轉移規則寫成表,讀表執行就...

鐵人賽 Software Development DAY 17
消除你程式碼的臭味 系列 第 17

技術 Day 17- 分離關注點:設定與主要邏輯分開

消除你程式碼的臭味 Day 17- 分離關注點:設定與主要邏輯分開 把變動頻繁的設定從穩定的主要邏輯裡拿出去。 你的核心商業邏輯,應該像一個在無菌室裡工作的科...

鐵人賽 Software Development DAY 14
消除你程式碼的臭味 系列 第 14

技術 Day 14- 複雜判斷:抽到具名函式裡

消除你程式碼的臭味 Day 14- 複雜判斷:抽到具名函式裡 布林表達式越長,越應該被命名。程式碼是寫給人看的,只是順便能讓電腦執行而已。 當你寫下一長串充滿...

鐵人賽 Software Development DAY 13
消除你程式碼的臭味 系列 第 13

技術 Day 13- 魔術數字:用具備語義的常數取代

消除你程式碼的臭味 Day 13- 魔術數字:用具備語義的常數取代 數字本身不會說話,名稱會。 在程式碼裡看到一個像 86400 或 0.05 這樣的數字,看...

鐵人賽 Software Development DAY 12
消除你程式碼的臭味 系列 第 12

技術 Day 12- 拒絕複製貼上:抽出共用邏輯

消除你程式碼的臭味 Day 12- 拒絕複製貼上:抽出共用邏輯 重複不是省事,是技術債。 在第二個地方貼上相似度 90% 以上程式碼時,就創造了一個混亂區。...

鐵人賽 Software Development DAY 8
消除你程式碼的臭味 系列 第 8

技術 Day 8- 消除抽象層:直接存取資料,不要繞路

消除你程式碼的臭味 Day 8- 消除抽象層:直接存取資料,不要繞路 抽象是個工具。它的存在只有一個目的:管理複雜度。 當你的抽象層沒有隱藏任何複雜性,反而製...

鐵人賽 Software Development DAY 7
消除你程式碼的臭味 系列 第 7

技術 Day 7- 資料結構至上:好程式碼的關鍵思考

消除你程式碼的臭味 Day 7- 資料結構至上:好程式碼的關鍵思考 搞錯了資料結構,寫的就不是程式碼,是日後要爆炸的地雷。 Bad programmers...

鐵人賽 Software Development DAY 5
消除你程式碼的臭味 系列 第 5

技術 Day 5- 簡潔性:程式碼是斯巴達式的

消除你程式碼的臭味 Day 5 - 簡潔性:程式碼是斯巴達式的 如果程式碼需要超過 3 層縮排,就代表已經發臭了,應該去處理好你的程式碼。 深度縮排的程式...

鐵人賽 Software Development DAY 3
消除你程式碼的臭味 系列 第 3

技術 Day 3- 實用主義:拒絕象牙塔裡的完美理論

消除你程式碼的臭味 Day 3- 實用主義:拒絕象牙塔裡的完美理論 有時候寫出的程式碼變得複雜、難以理解,並非因為技術不足,而是我們追求了錯誤的目標——忽略了...

鐵人賽 Software Development DAY 2
消除你程式碼的臭味 系列 第 2

技術 Day 2- 好品味:優秀工程師的直覺

消除你程式碼的臭味 Day 2- 好品味:優秀工程師的直覺 很多人以為,程式設計的厲害在於演算法或是那些設計模式。但還有一個更務實的概念一定要掌握。 Bad...

鐵人賽 Modern Web DAY 23

技術 Day23 — 青出於藍 | 淺談「識別壞味道」,分辨程式碼的好壞

前言 程式碼臭臭? 何為程式碼異味? 程式碼又是如何散發「臭味」? 在「重構:改善既有程式的設計」 這本書有提到,程式碼異味(Code Smell)是在講說,程...

技術 Other Smell > Incomplete Library Class 不完美的外部套件與重構

前言 今天是第三十六天,這也是本系列介紹的最後一個程式碼氣味。明天總結出新版本的氣味對照重構表後,終於可以完成這次的鐵人賽挑戰。昨天剛巧看見龍哥分享資深工程師身...

技術 Dispensables > Oddball Solution 歧異解方與重構

氣味的徵兆 當你在專案內的不同地方發現存在實現相同功能,但卻是不同實作細節的程式碼片段,這種現象可被稱為「歧異解方(Oddball Solution)」氣味,或...

技術 Couplers > Indecent Exposure 過度揭露與重構

氣味的徵兆 當我們發現類別或方法毫無節操的對外洩漏內部實作細節時,我們可能發現了「過度揭露」氣味(Indecent Exposure or Excessive...

技術 Change Preventers > Combinatorial Explosion 組合爆發與重構

氣味的徵兆 這個程式碼氣味發生在多個程式碼片段執行「幾乎相同」的任務,但卻使用了不同的資料或行為組合。請特別留意「幾乎相同」而不是真正完全相同。 如果當你注意到...

技術 Couplers > Middle Man 中間人與重構

氣味的徵兆 如果一個類別除了當作另外一個類別的中間通道之外,沒有提供更多額外的價值,我們可以稱呼這種情況為「中間人(Middle Man)」氣味。物件導向中一個...

技術 Couplers > Message Chains 訊息鏈與重構

氣味的徵兆 訊息鏈(Message Chains)又被稱為「火車殘骸(Train Wrecks)」,當我們執行方法時會需要呼叫一個物件,然後該物件又需要呼叫另外...

鐵人賽 Software Development DAY 30

技術 Couplers > Inappropriate Intimacy 不當親密類別與如何重構

氣味的徵兆 Inappropriate是不當、不妥的意思,Intimacy則是親密之意,兩個字合起來可以直接翻譯為「不當的親密關係」。中文版的「Refactor...

鐵人賽 Software Development DAY 29

技術 Couplers > Feature Envy 依戀情節與重構

氣味的徵兆 當一個方法過於貪心不安於現狀,過度依戀屬於另外一個類別內的屬性或資料時,可以稱之為「依戀情節(Feature Envy)」氣味。這個氣味代表了實現該...

鐵人賽 Software Development DAY 28

技術 Code Smell > Couplers 耦合怪

「耦合怪(Couplers)」是一種程式碼氣味的類別。這個氣味識別出將物件通通綁在一起的情況,這妨礙了在不同情境下程式碼的使用靈活性。這種高耦合阻礙了可用性和模...