Clean Code 筆記 之 第二章

2022-01-20 09:27:15 字數 1302 閱讀 4423

這是我第二次看這本書了(clean code)的時候,第一次看的時候是,看到某世界五百強在他們的**中我竟然看不到一句注釋,現在我還記得當時的情景,當我download 下第乙份**的時候,我想在**中了解一下公司**編寫習慣以及少量的業務,在我以前的認知中,**中加上很多注釋這些注釋有助於我了解業務,但是在這份**中我竟然看不到一行注釋,當時我的反應是,一定會有文件的存在,我就向專案的負責人求助了,誰知他回了一句你多理解一下命名就行了,(其實我的英語非常差,後來慢慢習慣後才發現好的命名一定是有巨大的幫助的)。

在《領域驅動》一書中有這樣的乙個名詞 「通用語言」 他的主要目的是使用統一的語言給某一事物進行命名,在以後的溝通中可以減少浪費時間與資訊之間的誤差。從而減少溝通成本。

「通用語言「 在**中我們可以看成「命名規範「」,這是程式設計師與程式設計師之間,code與code之間的溝通方式。

在乙份好的**中變數,函式,類的名稱已經可以告訴我們所有的大問題。如果你的**需要加上注釋才能告訴別人重要的問題,那我想您可以考慮一下你的命名是否合理了。

當然**的命名也不是一成不變的,不如你的業務發生了改變,你的命名可能也需要發生改變,如果不進行改變會造成資訊缺失的後果,最終將導致**難以維護。

下面用兩段**演示出上面的觀點

//使用者中篩選出使用者型別是vip的使用者

public listgetusersname() 

return list;

}上面的**我也是曾經無數次的寫過,最終也是表達出了我的需求,但是現在有這樣乙個要求,**中不要出現中文或者說需求需要改成「查詢使用者年齡大於100歲的使用者名稱」

這個時候大多數人的習慣是改動條件「item.type = "100"」注釋有很大的可能被忽略這個時候新的開發人員接手了很容易產生誤導,因為他本可以通過命名就不用再看這段**的,因為命名的不規範,導致了他必須跟蹤進來檢視**,並且還造成了誤解。

說一下以上**中的錯誤:

getusersname:不能見名識意

listlist :不能告知集合內容

userlist :命名錯誤因為這裡不適合使用list來說明這是乙個集合,應使用users 因為list 對於程式設計師來說具有很特殊的意義。除非 內容真是乙個list 型別

item.type :不知具體含義

return list; 不能告知我如何使用返回值

public listgetvipusernamebyusertype()

return vipusersname;

}所以建議大家還是看一遍cleancode

第二章筆記

1.遞迴查詢和迭代查詢 遞迴查詢是一條環路,直接想成遞迴的定義就行,你想查乙個 的ip,首先將這個 傳給它的本地dns,然後認為本地dns可以直接將ip給你,然後本地dns為了知道這個ip又詢問下個dns伺服器。從此可以看出,增加了被涉及的伺服器的資料,所以一般用迭代查詢,迭代查詢是你詢問完後給你下...

第二章學習筆記

在c 中,陣列下標從0開始,而不是1.c 不支援陣列的抽象,也不支援對整個陣列的操作。在c 中,物件可以靜態分配 即編譯器在處理程式源 時分配,也可以動態分配 即程式執行時,用執行時刻庫函式來分配。靜態與動態記憶體分配的兩個主要區別是 1 靜態物件是有名字的變數,可以直接對你進行操作。而動態物件是沒...

第二章 C 筆記

1.可以用函式sizeof來確定乙個型別占用記憶體的大小 如 cout 2.整數除法的結果仍為整數,小樹部分會被截去。如,5 2 2 5 2 2 而不是 2.5 模運算 只有當被除數 前面的那個數 是負數時候,餘數才會是負數。如 7 3 1 12 4 0,20 13 7 而不是 7 3.型別轉換並不...