一、一致性原則:適用於各類設計場景,好比系統架構設計中操做系統、軟件版本都要一致,便於管理便於自動化部署,試想一下,假如大家公司用了各類操做系統、各類服務版本又不一致,天知道怎麼管理這些服務器。代碼設計中代碼風格、註釋風格、文件編碼等等都要一致,你本身設計的代碼風格都不一致想一想幾個月後你還能讀懂本身的代碼了嗎?軟件設計也要一致,你作一個網站,有的頁面是ajax加載的,有的是直接加載的,用戶刷新的時候就會有時候跳到這有時候跳到那,體驗不好,並且實現的時候代碼也很差複用。美工設計也要一致,整個主題是藍色,忽然來了個紅色,太破壞和諧社會了……總之一切都要遵循一致性原則。優秀的一致性設計好比hadoop系列,hadoop、hive、pig、sqoop等等目錄結構一致,配置方法也一直,這樣用戶配的起來很方便,不看文檔也知道怎麼配了,猜都能猜到,這就是一致性的最高境界。
二、簡單性原則:任何東西的設計都要儘可能簡單,服裝、網站、程序、架構……都不要過分設計,初級人員總以爲只有複雜的設計才能體現出他的才能,真正的大師多是已經厭倦設計複雜的東西所以他們設計的東西都很簡單。系統越複雜引入bug的可能性就越大,運行效率也越慢,所以老是想一想有沒有更簡單的方法是追求良好設計的簡單途徑。
三、層次性原則:模塊化也好、面向對象也好、MVC也好,雲計算也好,其實本質無非就是分層,劃分出良好的層次便於管理、便於維護、便於人類理解,同時附帶的好處就是靈活性和複用,分出了層次就能夠把各個層次靈活的組合起來而且能夠重用某個層。好比如今很火的雲,之前服務器和平臺都是柔在一塊兒的,雲把他們分開了 服務器叫IaaS層,平臺叫PaaS層,這樣當咱們要用數據庫的時候不用安了 到IaaS層拿就行了,不用關心它安在哪臺服務器上不用本身配集羣,由於那一次已經抽象出來了。
四、開放性原則:不但源碼要開放、設計也要開放,不用把任何東西設計成固定的,不可變的。世界原本就是變的,沒有任何東西是不變的,全部設計的時候就要考慮之後的擴展和變化。閉源的問題就出在他以爲本身的代碼不會變或者說不能讓別人變。
任何優秀的設計跑不出這些原則,不信你想一想spring、 linux、 cloud、mvc、...
linux