發表文章

目前顯示的是 2月, 2023的文章

常見的程式碼壞味道(Code Smell or Bad Smell)

圖片
常見的程式碼壞味道(Code Smell or Bad Smell) 圖片取自:https://www.slideshare.net/ElMahdiBenzekri/art-of-refactoring-code-smells-and-microservices-antipatterns 前言 究竟重複的程式碼要不要共用它?傳統的軟體開發上,重複的程式碼幾乎被視為罪惡的來源,但是它真的有多可怕? 常見的 Code Smells The Dispensable (一些可有可無的) Lazy Class (冗員類別) 如果一個類很少使用它會增加代碼庫的複雜性,從而阻礙開發。這樣的類可能是不必要的,它的功能可以成為另一個類的一部分。 Data Class (只有資料的類別) 一個類別只有包含『資料』未包含Methods,也就是說並未包含行為,不具行為模式的類別代表該『實例』容易被【其他類別所操控】。 Duplicate Code (重複的程式碼) 如描述,這也是上次有分享在我的 FB 社團 軟體開發之路[德國資深架構師給新手的建議] 中有產生非常熱烈討論,這在社團朋友提醒下想起 Refactor 重構一書裡曾提過 rule of three 法則, 這個法則的定義是這樣的,有時部分程式碼重複其實是允許的(不是說重複一定是是被允許的)而是在某些 Context 情境下,該程式碼有一段時間不會衍伸別的功能 或 需求一段時間不會異動、且如要將它 DRY 會產生的『複雜度』或『花費時間』遠高於預估的時間 或 不值得在目前這個專案的節骨眼上花費這個時間來做這件事,加上它 DRY 產生的複雜度偶後產生的維護成本【遠高於】不 DRY 的情況下的維護本,那麼,在這個時候,這個異動頻率【極低】的程式碼就不需要花費這個時間來 DRY 了!! 因為重點在於,重構是需要『成本』的。(迷之音:DRY 是種抽象化阿~😎) 這讓我想起之前,大約在 2016 年左右,在 101 的樓上某金融業客戶,曾經做過一個專案,這個專案就是因為客戶 DMZ 環境的因素,我讓內網的 Webside 與 DMZ 的網站保留了部分重複的程式碼,因為這段程式碼終年不需要異動,我也懶得花這個時間,而我居然也忘了這記件事情了.. 哈哈 Orz 不過原歸正傳,我個人還是認為,其實適當