軟件開發(fā)就找中魯世紀(jì),一站式服務(wù),為企業(yè)提供軟件開發(fā),軟件定制服務(wù)。
面向?qū)ο笤O(shè)計(jì)之所以更流行,是因?yàn)檫@種思想更符合人對事物的認(rèn)知和定義,在思想表達(dá)和傳遞中更容易。
隨著平臺建設(shè)的推進(jìn),開發(fā)過程會遇到各種問題和挑戰(zhàn),如果能有這個認(rèn)識,在處理可改可不改或者較小細(xì)節(jié)時,會對是否做調(diào)整也有幫助。
日常在做系統(tǒng)設(shè)計(jì)和方案選擇時,有些開發(fā)可能會考慮代碼量。
然而,代碼量不應(yīng)該成為設(shè)計(jì)好壞的標(biāo)準(zhǔn)。
如果代碼量小而引入如下的問題,反而增加了系統(tǒng)復(fù)雜度和維護(hù)成本,系統(tǒng)的穩(wěn)定性和開發(fā)效率也會受很大影響。
一個好的架構(gòu)設(shè)計(jì)能規(guī)避掉日常容易遇到的問題,也能更好容納突發(fā)劇增的系統(tǒng)訪問,對臨時的故障恢復(fù)也有很大幫助。
這些設(shè)計(jì)的優(yōu)化,都是日常開發(fā)中應(yīng)該注意的細(xì)節(jié)問題,只要在開發(fā)時稍微思考下很容易識別和做出選擇,也不會增加開發(fā)難度。
【常識五:對接的外部系統(tǒng)是不可信的】
在一些業(yè)務(wù)規(guī)則相對固定、場景清晰的系統(tǒng)中,我們經(jīng)常能看到比較老的系統(tǒng),這些系統(tǒng)經(jīng)歷的長時間運(yùn)行,且使用者習(xí)慣也固定了,當(dāng)初開發(fā)該系統(tǒng)的人員有些可能都離職甚至退休了。
然而隨著業(yè)務(wù)微小變動擾動原有的設(shè)計(jì),特例越來越多,技術(shù)框架也在不斷更新進(jìn)步、團(tuán)隊(duì)成員變動等等,這一切都會使得系統(tǒng)慢慢的走向衰敗,這和汽車保養(yǎng)是一樣的。
如果在可見的未來兩年、五年內(nèi),系統(tǒng)依然會服務(wù)于業(yè)務(wù),研發(fā)就應(yīng)該勇于做出系統(tǒng)重構(gòu),雖然短期看不到價值體現(xiàn),然而優(yōu)化的意義和價值卻是長期存在的,這也促使了系統(tǒng)能夠更長久的走下去。
【常識七:工程化是解決開發(fā)效率的**工具】
當(dāng)擁有基于這樣的認(rèn)知時,在系統(tǒng)設(shè)計(jì)會有不同,比如創(chuàng)建一個新表時就會主動評估業(yè)務(wù)查詢需求建立合適的索引、在設(shè)計(jì)系統(tǒng)容量時會考慮容量及達(dá)到容量后的循環(huán)覆蓋策略、對于流量洪峰的削峰和控制都會在最初設(shè)計(jì)時考慮,等等。
如果系統(tǒng)必須依賴研發(fā)工程師不間斷地維護(hù)和扶持才能運(yùn)轉(zhuǎn),那就意味著隱藏著巨大的風(fēng)險隱患。
【常識九:產(chǎn)品模型設(shè)計(jì)的好壞直接影響軟件系統(tǒng)質(zhì)量和效率】
測試是系統(tǒng)建設(shè)的重要組成部分,是系統(tǒng)的質(zhì)量、安全等的重要保障,但當(dāng)線上出現(xiàn)異常或故障時,測試卻不應(yīng)該成為責(zé)任人。
一個的系統(tǒng)建設(shè),離不開良好的產(chǎn)品設(shè)計(jì)、健壯的系統(tǒng)架構(gòu)、規(guī)范的代碼等,這些是前提和基礎(chǔ)。
故而研發(fā)應(yīng)重視代碼變更部分的邏輯和邊界測試,而非依賴于測試人員。
【常識十一:偏業(yè)務(wù)的系統(tǒng)應(yīng)具備完整獨(dú)立的運(yùn)營能力】