天天看點

一個關于軟體工程的往事--代碼整潔

小注:曾經有一次,實在不知道如何展現我們軟體開發的辛苦,就給甲方要了一筆錢,費用名稱就叫 軟體工程費。現在,想想也是多年以前的值得會心一笑的事情。後來,買了一些書,實在是看不進去,這不有人專門講了一下,就非常開心,簡單回顧一下。

一、主題

軟體工程的敵人就是複雜度

複雜度的一個基本标準就是代碼整潔。

是以為了能夠控制話題,隻說 Clean Code.

二、指導原則

以下多半是口耳相傳 多年的經驗之談,自己搬運一下,整理一下,便于自己強化了解和記憶

什麼是好代碼?

局部幹淨,核心邏輯清晰

指導原則:

消除重複,分離關注點,統一抽象層次

三、原則分說

分開來說,

1.消除重複

一句話解釋:減少心智負擔,重複過程中把自己整暈了,因為變化的點藏在雲裡霧裡。

例子:代碼重複,結構重複

解決方法:繼承體系(有時候也多是使用組合),泛型(比較不錯的發明),模闆方法(這個快用爛了,mvc思想或者說Template),高階函數(流水化,畢竟函數式程式設計還是曾經很流行的)

2.關注分離點

一句話解釋:關注點一緻的代碼,應該高内聚,低耦合,使用空間換取心智思考的時間。那麼,關注點不一樣的代碼,應該互相之間沒有任何關聯。

議論:就是物以類聚,人以群分,抱成一個團。但是,這是一個方法論,是為了在設計和意識層面對于細節的把握。鍛煉自己的抽象能力,并不是為了處處分開。代碼是一點點寫的,也是總結出來的,如果很多事情直接做好了,那是非常好的,很多時候總是有各種妥協,但是還是可以每次改正一點點。

批注:心有猛虎,細嗅薔薇。

3.統一抽象層次

一句話解釋:同一抽象層次的對象可以直接對話,并且存在着緊密合作。

議論:抽象是人類最偉大的發明,差別與其他智人。

四、附錄

這裡非常想提一點的就是 命名與注釋:

之前總是整不明白為何要有一個領域專家的詞。

現在知道了它是為何出現,解決什麼問題。

就是一個在實踐上面三個原則的過程中,發現,天然有一個職場分工的分包分層。需求,産品,設計,開發,測試.....

例子:大家對于清洗蘋果這個業務,其中蘋果這個概念可能表達不同:

需求說,一個紅色的果子

産品說,吃着不錯,還是很健康,這個曆史很悠久....

設計不說話,畫了一個自己心中的物件

開發不說話,整了一個Apple

測試不說話,TestXxx就結束了

是以,統一術語,應該就是領域專家的核心内容。

這種能夠沉澱下來的東西才會成為技術财富。

關于上述三個原則的程式設計tips,是不讨論的,因為技巧是說不完的,有了深刻的了解,就會源源不斷地創造屬于自己的技巧和程式設計習慣。實在需要就可以去看阿裡的武俠秘籍,什麼黃山版,嵩山版....Tencent也有白皮書...

小結:希望帶來一點開心

繼續閱讀