鮑勃大爺:物件是更關注行為,資料庫表則是簡單的資料結構,if/else/switch有使用依據
物件更多是關於行為還是資料?從外部看,資料是隱藏的,行為是公開的。我們看到投入轉化為產出。但看不到任何倍隔離的資料;我們也不知道這些資料的儲存位置或儲存方式。
資料庫表更多是關於行為或資料資訊?它們是簡單的資料結構。從外部看,資料是暴露的,沒有任何行為,無論可見或隱含的行為。
物件和資料結構是相互補充的。它們是正交的:隱藏資料和暴露行為;或者,暴露資料和無可見行為。
我們使用具體的if /else/switch語句區分資料結構型別。我們通過抽象多型性來區分物件型別。依賴關係的方向彼此相反。這對計劃組織具有深遠的影響。
在任何一個程式中,如果將新資料型別新增到現有行為中,則物件是首選的組織方式,因為新增子類比更改過多的switch語句要容易得多。
在任何一個程式中,如果將新行為新增到現有資料型別,則首選資料結構;因為新增一個switch語句比更改層次結構中的過多子類要容易得多。
因此,在您的系統中,哪種更改的頻率更高?您是更頻繁向現有資料新增新行為,還是更頻繁向現有行為新增新資料型別?而且,也許更重要的是,根據作用域權衡。
假設:在程式碼的最低階別,我們傾向於將新行為新增道現有資料型別。在體系結構架構級別,我們傾向於將新的資料型別新增到現有行為中。如果這個假設為真,則此推測表明,最好圍繞if/else/switch邏輯組織低階程式碼,而最好圍繞多型性組織體系結構和架構。
眾說紛紜:
這個觀點有趣,也許解釋了:為什麼物件範例中的許多方法都是公開資料的簡單獲取getter()和設定操作setter()的原因。而在資料庫表世界內,通常將儲存過程和觸發器(代表行為)新增到DBMS。如何融合它們... (banq注:無法融合,兩種世界觀)
我正在一箇舊系統上工作,在該系統上許多資料結構都暴露在外。這是一場災難。
物件最好是關於保護資料完整性的。您可以通過組織與該資料的互動來確保這一點。
兩者,但並非總是同時。我傾向於使用最低階別的應用程式組織我的應用程式,其中包含一個資料物件和一些獨立的行為類,例如驗證。它們被卡在一個幕牆後面,該幕牆將這些定義組合成一個可配置的整體。有些人可能會認為這是“貧血模型”。我只是應用SRP和DI來建立可測試的,可組合的領域模型。
資料儲存和資料處理應該有明顯的區別。這樣一來,當需要在2040年用SuperDatastoreX淘汰MSSQLs時候,團隊不會再對你的名字吹氣了,因為您“對資料庫進行了程式設計”。
15年了,我從未見過有人真正改變過他們的儲存系統
相關文章
- 鮑勃大爺:單元測試中單元是多小?
- 鮑勃大爺:為何選擇Clojure?
- 鮑勃大爺:軟體架構類似房子,物件導向是房子的結構,水管線管是函數語言程式設計架構物件函數程式設計
- 鮑勃大爺:SOLID概念解釋Solid
- 鮑勃大爺:將if/else中每個條件變為邏輯並列互拆而不依賴執行順序。
- 資料庫——關係型資料庫MySQL--簡單使用資料庫MySql
- 資料庫-單表結構-建表語句資料庫
- DBus資料庫表結構變更處理方案資料庫
- 資料結構簡單題資料結構
- 資料結構之資料、資料元素、資料項、資料物件之間的關係資料結構物件
- 鮑勃大爺:敏捷是讓經理面對慘淡的現實!是不是這種試錯成本太高?敏捷
- 什麼是資料結構資料結構
- Flyway讓資料庫版本管理更簡單資料庫
- 幾千萬記錄,資料庫表結構如何平滑變更?資料庫
- 將物件解析為JSON資料和將JSON資料解析為物件的簡單例項物件JSON單例
- database資料庫的資料結構Database資料庫資料結構
- 鮑勃大叔為敏捷正名敏捷
- python演算法與資料結構-什麼是資料結構Python演算法資料結構
- 1.1資料庫物件結構遷移方法資料庫物件
- 資料庫表連線的簡單解釋資料庫
- Agile PLM資料庫表結構(Oracle)資料庫Oracle
- ZBlog的資料庫表是可以設定字首-修改ZBlog資料庫字首資料庫
- 資料結構——單鍵表操作集資料結構
- mysql,sqlserver資料庫單表資料過大的處理方式MySqlServer資料庫
- mysql資料庫-資料結構MySql資料庫資料結構
- 我是如何自學資料結構的?資料結構
- MySQL資料庫的基本使用簡單易懂MySql資料庫
- 如何建立最簡單的 ABAP 資料庫表,以及編碼從資料庫表中讀取資料 (上)資料庫
- 資料結構中抽象資料型別是什麼?資料結構抽象資料型別
- 大資料的核心架構層是哪些?大資料架構
- 索引是一種讓你快速找到資料的資料結構索引資料結構
- 【資料結構】線性表-單連結串列資料結構
- Mysql索引資料結構為什麼是B+樹?MySql索引資料結構
- ORM是不適合DDD的!鮑勃大叔表示同意ORM
- 什麼是大資料?大資料開發是做什麼的?大資料
- [大資料文章之其四] 概率資料結構簡介大資料資料結構
- 個數是如何用大資料做行為預測的?大資料
- 【資料庫】簡單聊聊資料庫可以做什麼,有什麼用?資料庫