勇者在這裡的生活雖然不長,但也漸漸習慣了現代社會的二十四小時制,看著只剩兩天多一點的倒數計時,也開始感覺到日程的緊迫。
但是耦合度是勇者沒聽過的專業術語,而且聽起來重要性很高,他無法忽略,只好語速極快地問出來:「耦合度是什麼?為什麼耦合度低了可維護性就高?」
勇者問出口的同時理解了,為什麼蕭凱琪講話的速度比他以前待的世界裡的人來得快很多,這都是逼出來的啊!
「耦合度就是依賴度。」蕭凱琪說:「如果我們寫的程式壽命很短,就不用考量這麼多,就像之前強調可讀性,是因為要和其他人合作一樣。當程式的使用壽命越長,就越可能會引進新技術來替換掉不再適宜的程式碼。」這時蕭凱琪剛好看到之前劃破的傷口,於是乾脆就拿它來比喻:「就像幫這個傷口換藥的時候,如果舊貼布黏的很緊,撕下來的時候就會帶著血肉。」
勇者感覺好疼。
「所以耦合度低是長期維護程式碼的趨勢。耦合度低還有很多優點,但我現在就算說了,對於沒實戰經驗的你,也只能一知半解。」蕭凱琪非常現實地說。
勇者無法反駁,但他提出至少讓他知道怎麼樣寫出耦合度低的程式碼。
「最簡單的就是今天提到的用介面和抽象設計,Delegation也是應用這個概念的產物。」蕭凱琪頓了頓後繼續說:「再來是一個模組只負責一個功能,就像我們一開始把計算機功能和日期功能獨立出來的那樣。」
「嗯嗯。」勇者覺得這兩個他能做到。
「再來的這個有點複雜,有些功能會共用變數,盡量確認共用是必要的才這麼設計,不要濫用全域變數。」蕭凱琪進一步說明:「全域變數就是生命週期和程式執行時間一樣長的變數。」
「喔喔,這個我知道,之前的迴圈內變數就不是全域變數而是局部變數!」勇者自信地笑了。
蕭凱琪呵呵地回應,聲音帶著些許幸災樂禍:「嗯,接下來的我想你就不知道了,因為就連我都還不是那麼熟悉。將原內部依賴關係抽離到外部的Dependency Injection和定義行為模式的Observer Pattern和Strategy Pattern。」
蕭凱琪看著呆住的勇者輕笑著有些瘋癲地再給他一擊:「這些低耦合度程式設計原則和物件導向程式設計基本原則SOLID有些地方有重疊,但不完全一樣,要做一個好工程師要學的東西還多著呢!」
勇者眼前突然一片黑。
系統空間的天色不會黑,那只是打擊過大一時無法反應過來罷了。