空間、運動(時間)以及程式設計師
目錄樹中出現的節點有很多種,有ResourceType、Field、Dic、DicItem、Function、Organization、AppSystem等,這些catalog節點記錄存在的意義是可以提供一套一致的方法去管理和使用它們。比如賬戶節點下的賬戶稽核狀態字典,這個字典裡列舉出來的值也可以在程式設計的時候去在程式裡寫死,或者寫個Enum型別列舉這些取值,但是那樣不靈活。它們都一致的出現在Catalog目錄樹上是為了統一管理,良好的管理,統一執行。
空間堆積原則,遵循構造定律,最大限度節省腦力
我們的系統中可能並沒有Person模型,系統內可以並不顯式的對應有Person“模型”,但是我們最好對應有Person“概念”,我們建立人的性別字典的時候我們最好先建立一個Person節點,然後在Person節點下建立Gender字典。我們建立一個Person節點,然後在Person節點下建立了Gender字典。我們使用這個字典的時候可以直接從頭腦中找到這個人類性別字典在目錄樹上的索引碼,我們可以直接透過“Person.Gender”去索引這個性別字典,因為建立這個字典的時候我們考慮了足夠多,這個字典不會隨著我們的系統的改變而改變。除非人會出現第三種性別這個人的性別字典才會改變,這個A系統我們透過“Person.Gender”索引人的性別字典,換做B系統我們一樣使用同樣的編碼。我們不編碼為Employee.Gender,不編碼為User.Gender,不編碼為Customer.Gender,我們編碼為Person.Gender,雖然我們的系統中並沒有Person模型,並沒有個Person Class。
程式設計師腦子裡不應該只有string、int、boolean等目錄節點
這群目錄樹可以幫助我們儘量避免C硬編碼,我們儘量透過那些Catalog目錄樹上記錄的資訊去實現我們的邏輯,我們寫程式碼的時候隨時應想著那個Catalog目錄樹上有什麼資訊,隨時想著藉助目錄樹上的資訊實現邏輯,那棵目錄樹上的內容不止可以被C程式碼訪問,也可以被嵌入的javascript和xacml等指令碼訪問。
我們程式設計師寫程式碼的時候可以寫“Person.Gender”這樣的字串,透過這個字串索引到性別字典,但是系統執行的時候在機器中是使用的Guid。只有與程式設計師打交到的時候才是可讀的字串,與終端使用者打交道的時候是可讀的漢字“男"。但是考慮到目錄樹的層級性,目錄樹上的節點的編碼都是有層級的,都是類似"Anycmd.Person.Gender.Nan"這樣的層級結構,編碼上記錄了層級。有時候這些層級結構會有用,比如組織結構的層級就是有用的,在資料庫中我們會使用like '1001%'來篩選一個組織結構的下級組織結構,這種情況又需要我們直接儲存這種有層級的組織結構編碼而不是它的Guid。而字典可以儲存Guid,因為字典沒有層級。
把握好結構和運動,不要人為製造一團亂麻的圖形
還有一個問題是這樣:Employee、User、Customer是否要繼承Person呢?Employee、User、Customer節點是否要作為Person節點的子節點出現在Person節點之下呢?
不需要。所有促使我們分析問題時往圖的方向一團亂麻的都是因為運動,因為運動需要圖,結構和運動這兩個維度交差在一起時容易讓我們一團亂麻。應對這個困難的辦法可能是:不要檢視在結構樹上“顯式”運動樹(執行時樹)。
Employee和User和Customer並非一定是人。計算機世界不是在完整模擬現實世界,計算機中的Person、User、Employee、Customer都不是完整的本神,它們都是分神,都是外部事物在計算機中的投影,計算機中的投影不具有本神完整的資訊,也不需要具有完整的資訊。Employee和User和Customer節點下也可以有Sex”欄位“,只不過是把這個欄位的值域繫結在Person節點下的Person.Gender字典上而已。
圖形是短暫的,樹形是常態的
靜態的結構樹投影在動態的運動樹上的影子已經不是樹形,動態的運動樹投影在靜態結構樹上的影子也不再是樹形。兩者的維度混合在一起時是圖形,是在樹的區域性製造的通路,通路中奔跑著的是攜帶著資訊的能量,能量之所以在通路中奔跑是因為通路兩端存在不等(差、場),攜帶資訊的能量移動到達目的後,控制器(我們程式設計師書寫的程式碼)在通路的某個地點又將通路斷掉,從而世界再次回到穩定的樹形。整個過程消耗了能量,所以只要能量源源不斷的輸入進去的話,我們的系統應該會一直持續下去。不僅消耗了電能,更重要的是消耗了程式設計師的能量。
相關文章
- 總是感覺時間不夠用?程式設計師如何管理時間?程式設計師
- 深度!程式設計師生涯的垃圾時間(上)程式設計師
- oracle建立臨時表空間和資料表空間以及刪除Oracle
- 對未來感到焦慮?那麼程式設計師如何利用空閒時間提高自己程式設計師
- 程式設計師進階攻略-胡峰-極客時間程式設計師
- C語言高效程式設計的四大祕技之以空間換時間C語言程式設計
- 好程式設計師分享JavaScript名稱空間模式例項詳解程式設計師JavaScript模式
- 千萬不要相信程式設計師在加班時間寫的程式碼!程式設計師
- 大資料匯入之MySql設計之空間換時間的設計變更大資料MySql
- Oracle臨時表空間檢視、新增臨時表空間資料檔案、修改預設臨時表空間 方法!Oracle
- Java 常用類-程式設計師頭大的日期時間APIJava程式設計師API
- 程式設計師相信的關於時間方面的謊言程式設計師
- 《程式碼大全》程式設計師們怎樣花費自己的時間程式設計師
- 讓程式設計師崩潰的瞬間(非程式設計師勿入)程式設計師
- linux系統時間程式設計(9) 計算程式片段執行時間clock函式Linux程式設計函式
- 程式設計師的幾個搞笑瞬間!!!程式設計師
- 可程式設計作息時間控制器設計程式設計
- 程式設計師如何預估自己的專案開發時間?程式設計師
- 2.5.7 建立預設臨時表空間
- linux系統時間程式設計(8) UTC秒數轉本地字串時間Linux程式設計字串
- 花費優秀程式設計師95%時間精力的事情 - MICHAEL JACKSON程式設計師
- 你知道年薪百萬的程式設計師是如何對時間管理嗎?程式設計師
- 10x程式設計師工作法-鄭曄-極客時間程式設計師
- 程式設計師的數學基礎課-黃申-極客時間程式設計師
- 程式設計師休息時間接私活遭公司辭退,不明覺厲?程式設計師
- JS設定時間格式為2010-01-01,以及時間加減JS
- Linux 檢視程式啟動時間、執行時間Linux
- 時間與空間複雜度分析複雜度
- 坑系列 — 時間和空間的平衡
- MyBatis自動設定建立時間和更新時間MyBatis
- STL-空間配置器、迭代器、traits程式設計技巧AI程式設計
- 從中國造像空間聊聊遊戲空間設計中的一些設計小技巧遊戲
- 程式設計師與架構師之間的差距很大嗎?程式設計師架構
- 當使用者無限制使用表空間配額且表空間有足夠空間時出現超出表空間的空間限額
- 程式設計師跳槽,到底選擇什麼時間辭職最合適?程式設計師
- C++日期和時間程式設計總結C++程式設計
- Rust 程式設計影片教程(進階)——008Cargo 工作空間Rust程式設計Cargo
- 互動多媒體展廳設計的空間佈局
- linux系統時間程式設計(6) 日曆時間tm轉字串strftime函式Linux程式設計字串函式