每個程式設計師都需要知道的概念和術語 - codeburst
這些概念術語包括:概念完整性、內聚性、抽象資料型別、耦合、資訊隱藏、最小驚訝規則等。
如果您讀過一本技術書籍(我想您應該是一名軟體工程師),您可能會發現一個您不熟悉的術語或概念。也許你在大學的某個時候學習過它,但你對它的記憶已經淡化了,或者它是一個你以前從未接觸過的新東西。通常,這取決於您正在閱讀的書籍的先程式度,以及您需要什麼樣的經驗才能充分利用您的閱讀。
抽象
在物件導向的程式設計中,抽象是將現實世界的實體簡化為其在軟體目的上下文中的基本和最需要的屬性和行為的行為。因此,在政府應用程式的上下文中,使用者物件需要具有 (firstName, lastName, nationalIdNumber ); 然而,在電子商務環境中,使用者物件不需要屬性“ nationalIdNumber ”。
屬性
物件屬性是根據物件狀態儲存不同值的屬性(變數)。例如,假設有兩個使用者物件,一個可以具有屬性/屬性 firstName=”Mohamad”,而第二個具有 firstName=”John”。
行為
物件行為是物件可以執行的動作。例如,使用者物件可能具有獲取使用者全名的行為。
封裝
封裝涉及將必要的屬性和行為捆綁在一個類中。它只公開其他物件需要的功能並隱藏其餘的功能。在使用者物件中,儲存使用者的購物車沒有任何意義。不過,可以儲存他們的名字。將 getFullName() 設為公共方法而將 generatePasswordSalt() 設為私有方法也是有意義的。
資訊隱藏
這涉及設計類,以便其他類不需要的屬性和方法對它們隱藏。
分解
分解是將一個大的或整個實體分解成更簡單和更小的部分,在這些部分很容易整合在一起並形成更大的實體。例如,在電子商務環境中,使用者可以有一個賬單地址和送貨地址,或者可能有多個送貨地址(家庭、辦公室、湖邊小屋等)。在這種情況下,您需要使地址成為具有自己的屬性和行為的單獨物件。
多型性
這是以相同方式與不同物件型別互動的能力。通常是因為它們都繼承了相同的超類或應用了相同的介面。假設您有一個名為“DataStore”的介面,它有兩個方法簽名“query() 和 save()”,現在您可以有多個物件來實現這個介面“FileSystemStorage、DBStroage 等”。因此,雖然它們是不同型別的物件,但它們都有兩個方法“query() 和 save()”。
概括
這涉及在單獨的類中重構公共屬性和方法,以便更頻繁地重用。它將確保您的系統更少耦合。
耦合
這是軟體工程中的一個術語,它描述系統的兩個部分何時相互依賴,以至於它們中的每一個都不能在另一個上下文中單獨重用。這被認為是不好的做法,因為這兩個部分是“耦合的”。還記得我們之前建立的地址物件嗎?您可以將它與使用者地址或商店地址等一起使用,因此它不再與使用者物件耦合。
靈活性
靈活性是指在不破壞系統的情況下應用更改或向系統新增功能的容易程度。
維護
這是指在系統交付後修復、改進或更改功能。
抽象資料型別:
這是一種由其行為定義且沒有實現的資料型別。您可以將抽象資料型別視為軟體設計中使用的理論概念。抽象資料型別的一個例子是堆疊、佇列或列表。堆疊必須具有“Push and Pop”操作,這些操作如何實現由開發人員決定,而不是程式語言。佇列資料型別也是如此;它必須具有“入隊和出隊”操作。現在假設您是一名開發人員,正在構建一個列表。列表是一種抽象資料型別,其介面由程式語言提供,由開發人員完成。開發人員可以建立連結列表或陣列列表或任何其他列表。
執行
這是從設計中建立工作系統的過程。簡單來說,就是寫程式碼的過程。
凝聚
Cohesion 描述了一個模組或一個類的目的是多麼簡單。高內聚模組意味著它的目的是明確的,並且不會比它需要的更復雜。另一方面,低內聚意味著它非常複雜,其目的不明確。
概念完整性
當軟體具有概念完整性時,這意味著它具有如此強烈的統一主題或感覺,以至於看起來好像是一位開發人員對其進行了程式設計。實際上,整個團隊可能已經開發了該軟體,但是因為他們遵循相同的指導方針和結構,所以一切看起來都是統一的。
關注
這是指系統部分的角色或動作。您可能還會聽到術語“關注點分離”,它可以幫助您解耦系統元件。
最小驚訝法則
這一原則指出,元件的行為應該符合人們期望的行為。例如,作為開發人員,如果我想禁用一個使用者帳戶,那麼我希望這在使用者模組中而不是在融資模組中。
相關文章
- 每個程式設計師都應該知道的下一個程式語言——Kotlin程式設計師Kotlin
- 每個程式設計師都需要知道一些遊戲網路知識程式設計師遊戲
- 每個Python新手都應該知道的程式設計技巧Python程式設計
- 每個程式設計師都會的 35 個 jQuery 小技巧程式設計師jQuery
- 每個Java程式設計師都必須知道的四種負載均衡演算法Java程式設計師負載演算法
- 每個程式設計師都該閱讀的10本書程式設計師
- 每個JavaScript工程師都應懂的33個概念JavaScript工程師
- 關於Unicode,字符集,字元編碼,每個程式設計師都應該知道的事Unicode字元程式設計師
- 每個開發者都應該知道的33個JavaScript概念JavaScript
- Java程式設計師都需要懂的「反射」Java程式設計師反射
- 每個程式設計師都應該瞭解的硬體知識程式設計師
- 每個程式設計師都應該參加一次 GDD程式設計師
- 程式設計師做產品需要知道程式設計師
- 好程式設計師大資料技術盤點 你都知道嗎程式設計師大資料
- 程式設計師程式設計入門一定知道!程式設計師需要學什麼?程式設計師
- 30個Python程式設計師需要知道的程式設計技巧,可以讓你的工作事半功倍!Python程式設計師
- 每一個程式設計師,都希望能成為分散式系統架構師程式設計師分散式架構
- 【ChatGPT】每個程式設計師百寶箱必備的語言模型ChatGPT程式設計師模型
- 人人都需要掌握的 5 個基本統計概念
- 每個程式設計師都應該閱讀關於資料結構和程式語言的十大演算法書籍!程式設計師資料結構演算法
- 每個高階前端工程師都應該知道的前端佈局前端工程師
- 每個程式設計師都在推薦的好用api程式設計師API
- 函數語言程式設計的幾個概念函數程式設計
- 初級程式設計師需要知道的基本程式碼規範程式設計師
- 每個程式設計師都該有個自己的部落格,分享我的四種部落格搭建教程!程式設計師
- 每個綠帶都應該知道的事
- Java程式設計師必須瞭解的7個效能指標,你都知道嗎?Java程式設計師指標
- 程式設計師需要有好的英語水平嗎?程式設計師
- 屬於每個程式設計師的節日,1024程式設計師節程式碼敲響世界程式設計師
- 每個人都應該知道的jQuery的提示jQuery
- 每個 Linux 新手都應該知道的 10 個命令Linux
- 程式設計師程式設計入門,物件導向需要知道這6點!程式設計師物件
- 程式設計師常用術語解釋程式設計師
- 每個Java軟體架構師都應該知道的20件事Java架構
- 2020年Java程式設計師需要哪些技術Java程式設計師
- 程式設計師需要了解的10個Linux命令程式設計師Linux
- 每週五程式設計師段子程式設計師
- 遊戲設計師都需要的邏輯方法:分清目標和手段!遊戲設計師