1.避免過度設(shè)計
? ? 1.1 不要超過實際使用需求,例如:設(shè)計支持100億人登陸的系統(tǒng)、家用空調(diào)可以達到零下的度數(shù)等等
? ? 1.2 不要把事情做復雜或者以復雜的方式工作
? ? ? ? 1.2.1 讓事物超過實際需要進行工作
?????????????????????select * 卻不需要所有的列
? ? ? ? ? ? ? ? ? ? ?一次請求反復查詢同樣的數(shù)據(jù)而未使用緩存
? ? ? ? 1.2.2 讓用戶費不必要的精力,增加用戶不使用的功能
? ? ? ? ? ? ? ? ? ? ? ?比如如果微博提供轉(zhuǎn)化pdf下載,就是不必要
? ? ? ? ? ? ? ? ? ? ? ? 這方面微信做的非常好,功能做的很克制,用戶使用門檻非常低
? ? ? ? 1.2.3 讓工程師去理解不必要的事情
? ? ? ? ? ? ? ? ? ? ? ? 代碼寫的特別復雜,不清晰
? ? ? ? ? ? ? ? ? ? ? ? 設(shè)計的過于復雜,比如一個功能設(shè)計了十幾個開關(guān)、十幾個參數(shù)配置等等
? ? ? ? ?這個我太有感觸了,設(shè)計的太復雜了,對于設(shè)計評審、代碼review、測試評審都是災難,其余專業(yè)的人員也很難發(fā)現(xiàn)問題并提出專業(yè)的意見,會嚴重降低工程的質(zhì)量,如果不能及時修正,就會最終失控,如果出現(xiàn)故障,無法在短時間內(nèi)進行解決和修復。
2.避免過度設(shè)計的原則
? ? DID原則
? ? D(Design)? 按照20倍進行設(shè)計
? ? I(Implement) 按照3倍進行實現(xiàn)
? ? D(Deploy)按照1.5倍進行部署,其中基礎(chǔ)設(shè)施要可擴展比如使用云等
3.三次簡化方案:簡化需求,簡化設(shè)計,簡化開發(fā)部署