最近的cleancode讀到了第十章。這一張主要講了如何去構造乙個類,感覺的cleancode至此已經不僅僅是單純的講如何『寫』出漂亮的**,而是從設計方向上去構造出好的**了。
本章節主要講了:
* 類的組織
* 我們構造的類應該短小
* 我們構造類應該是為修改而組織
任何的設計最後都將落實到實現上來,漂亮的實現乙個類與構造這個類應該是同等重要的。我們在寫乙個類的實現時,類中的成員應該遵循以下順序:
1. 公共靜態常量
2. 私有靜態常量
3. 實體變數
4. 公共函式
此外,我們一般將某個函式的私有工具函式放到這個函式後面,滿足自頂向下的原則。這樣會使得我們的程式更加的易讀,用作者原話說:使讀程式像是讀文章一樣流暢。
並且我們在書寫類的時候應該盡量保持 變數 和 函式 的私有性。
類同函式一樣,應該是短小的。單數類的短小應該與函式的短小區別開來。
通常我們說函式要短小主要還是限制在她的行數上。
而類的短小則是指類的職責應單一。
這裡我們涉及到了乙個原則:單一職責原則(srp)
。
srp認為 :類或者模組應該只有一條加以修改的理由。
不得不說這是乙個很抽象的定義。
我所理解的但一職責原則是要將業務關注的那一部分邏輯的類嚴格按照功能拆分,這樣會讓我們的類顯得更加靈活,清晰,低複雜性。
乙個生動的講srp的例子
srp 可能會帶來的一些影響:
花費你更多的時間去設計短小的類
增加**行數
閱讀的時候可能會在多個文件中跳轉
不過以上的某些問題可以通過良性組織我們的文件結構加以改善的,對於我而言,讓**擁有更高的可維護性而付出這些代價是值得的。
方法操作的變數越多,說明方法和類的黏度越高, 內聚性越強
類中的方法啊和變數相互依賴,形成乙個緊密的邏輯整體,則內聚性越高
毫無疑問,當乙個類喪失內聚性的時候我們應當拆分它。
首先,我們的類應該遵循開放-封閉原則(ocp)。即類應當是對擴充套件開放,對修改關閉的。
其次,類的功能應該是獨立的,這樣當你要重構乙個類的時候,本處的修改不會影響到其他的地方。
如何做到此處的修改不影響其他地方?我們應當隔離修改。這裡就說到了另乙個原則:依賴倒置原則(dip)。dip其本質是類應當依賴於抽象,而不是具體的實現細節。
我對此的理解是 抽象類是依賴與具體的類而產生的,現在我們在構造類的時候應該要去依賴別的抽象類,所以叫做依賴倒置。
遵循依賴倒置原則可以有效的降低耦合,隔離細節。
第十章 TypeScript 類
class是ts的核心,使用ts開發時,大部分 都是寫在類裡面的 類的定義,類的構造,類的繼承 class person 例項化 這邊是可以new出多個例項的 var p1 new person p1.name batman p1.eat var p2 new person p2.name supe...
第十章 物件和類
物件導向是一種程式設計風格,用於任何一種語言。過程性程式設計 考慮遵循的步驟,使用者希望有哪些功能,我如何提供,如何儲存資料。物件導向程式設計 首先考慮使用者,確定乙個物件的屬性和操作這些屬性的方法。使用者介面有哪些。相當於自己定製的乙個新的型別,這個型別的屬性和可以對這些屬性進行的操作 介面就是將...
第十章 物件和類
c 中,類由兩部分組成 1 類宣告。包括成員變數和成員函式。一般方法在標頭檔案中。2 類方法定義。包括成員函式的定義。一般放在實現源 中。控制訪問中有有兩個關鍵字 private和public 直接上圖 類物件可以直接訪問public成員 而private成員只能通過public方法來訪問。priv...