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