小注:曾經有一次,實在不知道如何展現我們軟體開發的辛苦,就給甲方要了一筆錢,費用名稱就叫 軟體工程費。現在,想想也是多年以前的值得會心一笑的事情。後來,買了一些書,實在是看不進去,這不有人專門講了一下,就非常開心,簡單回顧一下。
一、主題
軟體工程的敵人就是複雜度
複雜度的一個基本标準就是代碼整潔。
是以為了能夠控制話題,隻說 Clean Code.
二、指導原則
以下多半是口耳相傳 多年的經驗之談,自己搬運一下,整理一下,便于自己強化了解和記憶
什麼是好代碼?
局部幹淨,核心邏輯清晰
指導原則:
消除重複,分離關注點,統一抽象層次
三、原則分說
分開來說,
1.消除重複
一句話解釋:減少心智負擔,重複過程中把自己整暈了,因為變化的點藏在雲裡霧裡。
例子:代碼重複,結構重複
解決方法:繼承體系(有時候也多是使用組合),泛型(比較不錯的發明),模闆方法(這個快用爛了,mvc思想或者說Template),高階函數(流水化,畢竟函數式程式設計還是曾經很流行的)
2.關注分離點
一句話解釋:關注點一緻的代碼,應該高内聚,低耦合,使用空間換取心智思考的時間。那麼,關注點不一樣的代碼,應該互相之間沒有任何關聯。
議論:就是物以類聚,人以群分,抱成一個團。但是,這是一個方法論,是為了在設計和意識層面對于細節的把握。鍛煉自己的抽象能力,并不是為了處處分開。代碼是一點點寫的,也是總結出來的,如果很多事情直接做好了,那是非常好的,很多時候總是有各種妥協,但是還是可以每次改正一點點。
批注:心有猛虎,細嗅薔薇。
3.統一抽象層次
一句話解釋:同一抽象層次的對象可以直接對話,并且存在着緊密合作。
議論:抽象是人類最偉大的發明,差別與其他智人。
四、附錄
這裡非常想提一點的就是 命名與注釋:
之前總是整不明白為何要有一個領域專家的詞。
現在知道了它是為何出現,解決什麼問題。
就是一個在實踐上面三個原則的過程中,發現,天然有一個職場分工的分包分層。需求,産品,設計,開發,測試.....
例子:大家對于清洗蘋果這個業務,其中蘋果這個概念可能表達不同:
需求說,一個紅色的果子
産品說,吃着不錯,還是很健康,這個曆史很悠久....
設計不說話,畫了一個自己心中的物件
開發不說話,整了一個Apple
測試不說話,TestXxx就結束了
是以,統一術語,應該就是領域專家的核心内容。
這種能夠沉澱下來的東西才會成為技術财富。
關于上述三個原則的程式設計tips,是不讨論的,因為技巧是說不完的,有了深刻的了解,就會源源不斷地創造屬于自己的技巧和程式設計習慣。實在需要就可以去看阿裡的武俠秘籍,什麼黃山版,嵩山版....Tencent也有白皮書...
小結:希望帶來一點開心