軟件工程的理念

一些工程的思想和理念。這些理念需要大量的實(shí)踐和沉淀, 才能有深刻的理解。?

系統(tǒng)的依賴(lài)越少越好

這里的依賴(lài)是指對(duì)外部服務(wù)的依賴(lài), 以及技術(shù)組件的依賴(lài):如zk ,redis, 分布式組件等。?

如果系統(tǒng)依賴(lài)多, 系統(tǒng)穩(wěn)定性就非常脆弱。 如果上下游系統(tǒng)或者redis等宕機(jī)了, 意味著系統(tǒng)可能不可用。?

同時(shí)意味著測(cè)試的復(fù)雜度增加,無(wú)論對(duì)于單元測(cè)試還是集成測(cè)試, 復(fù)雜度都大大增加了。對(duì)于單元測(cè)試,需要引入一堆Mock組件, 對(duì)于集成測(cè)試增加搭建環(huán)境的成本了。 這也意味著測(cè)試效率非常低下。?

所以設(shè)計(jì)系統(tǒng)時(shí), 對(duì)于引入額外的依賴(lài), 要慎重考慮。 多一個(gè)依賴(lài),意味著系統(tǒng)的維護(hù)成本劇增。

簡(jiǎn)單至上

如果一個(gè)系統(tǒng)很復(fù)雜, 引起的后果將是災(zāi)難性的, 意味著這個(gè)系統(tǒng)的維護(hù)成本很高。 系統(tǒng)的熟悉成本很高, 修改代碼成本很高, 因?yàn)楦拇a得很謹(jǐn)慎啊, 系統(tǒng)這么復(fù)雜,萬(wàn)一改出新的bug,如何是好!

在系統(tǒng)設(shè)計(jì)中, 一定要權(quán)衡好收益和付出。 如果為了解決一個(gè)業(yè)務(wù)問(wèn)題, 收益是1%, 但是花了200%的精力去解決, 同時(shí)還增加了系統(tǒng)的復(fù)雜性,那么就得不償失了。

同時(shí),如果系統(tǒng)變得越來(lái)越復(fù)雜了, 那么就得提問(wèn)了: 是不是有不合理的需求?? 是不是架構(gòu)有問(wèn)題? 是不是設(shè)計(jì)有問(wèn)題? 是不是可砍掉部分功能? 系統(tǒng)是不是可以拆分? 是不是系統(tǒng)抽象的不夠好。 這些點(diǎn)都值得反思。?

在追求技術(shù)精益求精的同時(shí), 也要追求效率的精益求精!

維護(hù)復(fù)雜的系統(tǒng)就像陷入泥潭一樣,越陷越深。

過(guò)早優(yōu)化是一切罪惡的根源

?在設(shè)計(jì)系統(tǒng)時(shí),發(fā)現(xiàn)都要考慮系統(tǒng)的可擴(kuò)展性。 但是很多時(shí)候, 過(guò)早的優(yōu)化是完全沒(méi)有必要。這 不僅浪費(fèi)了人力資源,還提升了系統(tǒng)的復(fù)雜度。具體可參考?對(duì)軟件可擴(kuò)展性的思考



?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容