1. 程式人生 > >CleanCode程式碼整潔之道培訓總結(2015-03-14)

CleanCode程式碼整潔之道培訓總結(2015-03-14)

        為期四天的CleanCode培訓時間很短,很難準確掌握一些知識,但讓我對程式碼有了一個重新的認識和啟發;之前也有看過設計模式、重構之類的書,看完之後也有一些感觸,過後在寫程式碼中還是不能應用進來,其實重構是時刻都可以進行和長期存在的,變數用途是否單一、一個函式的命名、一個if語句表示式、是否有重複程式碼、函式職責是否單一、函式是否短小易懂、抽象層次是否單一;

        原來之前寫的程式碼是這麼爛,在修改程式碼時從來都不會去考慮重新組織程式碼結構,寫好的程式碼就是在寫程式碼時注意細節如何才能寫出好程式碼呢?這是作為程式設計師值得思考的問題,程式碼不是設計完後就不能改變的,應該是在以後需求變化,不斷重新設計,更利於以後的擴充套件

         重構就是在不改變程式碼外在行為的前提下,對程式碼做出修改,以改進程式碼程式的內部結構,提高其可理解性,降低其修改成本;本質上說,重構就是在程式碼寫好之後改進它的設計。

函式10個1
1、每個變數只用於單一用途
2、每一行程式碼只表達一件事
3、一個迴圈只做一件事
4、單一抽象層次原則
5、程式碼組織得一次只做一件事情
6、函式體內只關注一種變化的原因(動機)
7、函式應該遵守單一職責
8、函式圈複雜度應該小於一十
9、函式第一原則是必須要短小
10、編寫函式時必須一心一意、專注、懷有謙虛的心態

程式設計3個價值觀
溝通--珍視與他人溝通的重要性
簡單--把多餘的複雜性去掉
靈活--保持開放,應對變化

計算程式的圈複雜度
1、從1開始,一直往下通過程式
2、一旦遇到以下關鍵字,或者其它同類詞加1(if/for/while/and/or)
3、給case語句中的每一種情況加1
4、三元運算子a?b:c 加1
5、給try catch語句加1

其它型別的複雜度度量方法
1、程式碼行數
2、函式引數個數
3、呼叫其它函式、物件、包的數量
4、每行運算子的數量
5、調轉語句個數(goto/break/continue/throw)
6、控制結構中的巢狀層數
7、變數個數,函式的變數
8、同一變數的先後引用之間的程式碼行數(跨度)
9、變數生存的程式碼行數

馴服深層巢狀方法
1、使用衛語句
2、通過重複檢測條件中的某一部分來簡化巢狀的if語句
3、用break塊簡化巢狀的if
4、把巢狀if轉化成一組if-then-else語句
5、把巢狀if轉換成case語句
6、把深層巢狀的程式碼抽取出來放在單獨子程式

軟體質量可以分為內在質量(程式碼架構設計)與外在質量(軟體使用過程穩定性)著名的冰山模型
內部質量管理的四個“現代化”
1、可量化----可度量
2、工具化----視覺化、透明,使用工具檢測(Java語言可使用sourcemonitor)
3、自動化----
4、優化----持續改善

檢查程式碼是否變壞的相關標準
1、格式標準
2、命名
3、類、函式名長度
4、註釋量
5、重複度
6、條件表示式
7、圈複雜度
8、函式引數
9、函式內變數個數

供參考的Clean Code方法
1、一個迴圈只做一件事情
一般情況下迴圈次數的數量級不是很大,效率就不會很明顯,儘量分開處理,看起來結構清晰
2、do/while的使用需要注意,是否執行是由其後的條件決定
3、關於函式單一出口問題,並不是那麼重要;如果能增強可讀性,那麼就使用return

參考資料下載

程式設計是一種態度,程式設計是一種技藝,程式設計是一種習慣
做一名有節操、有底線的程式設計師