日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 架構(gòu)師社區(qū)
[導(dǎo)讀]來源:https://juejin.cn/post/6844904142960328718|前言剛剛與同事開了一個分享會,筆者分享了一些了代碼設(shè)計模式相關(guān)的內(nèi)容。以及復(fù)盤了一下項目中有些復(fù)雜的業(yè)務(wù)場景,為什么沒有很好的應(yīng)用到設(shè)計模式。業(yè)務(wù)雖然肯定保密的,但是拋開項目,業(yè)務(wù)層面,縱...

來源:https://juejin.cn/post/6844904142960328718

| 前言

剛剛與同事開了一個分享會,筆者分享了一些了代碼設(shè)計模式相關(guān)的內(nèi)容。

以及復(fù)盤了一下項目中有些復(fù)雜的業(yè)務(wù)場景,為什么沒有很好的應(yīng)用到設(shè)計模式。

業(yè)務(wù)雖然肯定保密的,但是拋開項目業(yè)務(wù)層面,縱觀回顧了一下筆者以往的項目,關(guān)于設(shè)計模式代碼規(guī)范問題還是有一些內(nèi)容還是值得落筆和大家分享的。

| 正文

設(shè)計模式究竟是什么?

主流的說法,大致如此:

設(shè)計模式是解決可在許多不同情況下使用的問題的描述或模板,一般在OOP中最作為最佳實踐的解決方案。最佳實踐一詞筆者在幾處介紹設(shè)計模式的地方,都有看到。
但是設(shè)計模式真的就是OOP中,業(yè)務(wù)開發(fā)的最佳實踐嗎?首先聲明筆者的觀點(diǎn),我是如何理解設(shè)計模式的:

設(shè)計模式是一種代碼規(guī)范,不同于空格,縮進(jìn)這類容易被插件檢測的入門規(guī)范,是一種中級代碼規(guī)范,不宜被入門者理解,不易被插件所檢測。

所以筆者認(rèn)為設(shè)計模式是屬于代碼規(guī)范級別的,能不能成為最佳實踐,也要看使用者。

設(shè)計模式在常規(guī)業(yè)務(wù)開發(fā)的存在感

常常在網(wǎng)上能看到,很多人曬自己碰到的“祖?zhèn)鞔a”,“龜派氣功式代碼”,“shǐ山代碼”等等。

我們不是有設(shè)計模式嗎?不是有代碼規(guī)范嗎?

代碼規(guī)范

幸存者偏差是一部分原因,只有爛代碼才會被掛出來讓人吐槽。

綜合來看這種情況還是很多,那么是如何造成這種局面的,難道是這屆程序員水平不行?

代碼規(guī)范性或使用設(shè)計模式的痛點(diǎn)

筆者首先復(fù)盤了一些在業(yè)務(wù)開發(fā)中為什么不能很好應(yīng)用設(shè)計模式的因素。

性能

在極端的考慮下,例如Java語言,設(shè)計模式面臨著更多的類文件以及更多的代碼

在類加載和內(nèi)存使用上的成本,自然是略微高于不使用設(shè)計模式。

但是也不能一概而論,有些設(shè)計模式(如:單例模式,享元模式等)就是為了提高性能節(jié)約資源成本而出現(xiàn)的。

以及大多數(shù)情況下,良好的代碼維護(hù)性優(yōu)點(diǎn)要遠(yuǎn)遠(yuǎn)大于這點(diǎn)微小的性能開銷,所以性能用了刪除線。

類爆炸

雖然網(wǎng)上已經(jīng)有各種設(shè)計模式的小Demo代碼,但是還是可能會出現(xiàn)設(shè)計存在缺陷,過度設(shè)計等情況。

復(fù)雜的設(shè)計模式,需要依靠業(yè)務(wù)建模,并不能拿來即用,甚至“生抄硬套”。

設(shè)計缺陷和過度設(shè)計,兩者對開發(fā)人員都是一樣痛苦的,會出現(xiàn)“不該用設(shè)計模式而用”,或者單純?yōu)榱恕?strong>迎合缺陷的設(shè)計模式”,寫出對應(yīng)邏輯復(fù)雜的代碼,這樣類爆炸不可避免。

而且,就算正常使用的設(shè)計模式在業(yè)務(wù)復(fù)雜情況,類爆炸也不可避免。比如策略模式,如果業(yè)務(wù)情況就是有很多,你也必須把每個情況實現(xiàn)類寫出來。

這就對開發(fā)的時間成本有一些細(xì)微的影響了。

甚至據(jù)筆者所知,有些傳統(tǒng)公司,或者對日項目,幾乎一個類要有一個Excel文檔,詳細(xì)說明類和其中元素的作用。

你可能和我想的一樣,找個javadoc的api,逆向從注釋生成Excel不就完了嗎?

但實際上這類公司大多數(shù)還是靠人力完成這些工作的,類的數(shù)量多了起來,對維護(hù)文檔的人也是巨大挑戰(zhàn)。

團(tuán)隊成員編碼水平

在傳統(tǒng)的軟件公司,出于節(jié)約成本考慮,很難做到人員全部“高配”并且能夠有自驅(qū)動的精神。

通常都是1拖N的人員配備,想讓薪資寥寥的初級工程師就有“高內(nèi)聚,低耦合,以及開閉原則為代表的設(shè)計模式六大原則等”這類的設(shè)計思想,也是有點(diǎn)難為情。此處說句題外話,而且很多初級工程師其實對框架很“有適應(yīng)性”的,當(dāng)然并非真正的適應(yīng)性。

比如:如果代碼里沒有統(tǒng)一異常處理,那么時間長了你就會發(fā)現(xiàn),到處都是自己的try catch。

再比如,項目里沒有引入工具類庫,那么時間長了你就會發(fā)現(xiàn),到處都是網(wǎng)上奇怪的util類,甚至每個類中都有重復(fù)的工具方法。

這些不能算是初級工程師的問題,要?dú)w結(jié)于技術(shù)負(fù)責(zé)人,比如觀察到了項目中還沒有工具庫,那么是不是應(yīng)該先去公司內(nèi)部的二方庫中尋找,如果沒有是不是應(yīng)該引入commons-lang3,hutool,guava這類的第三方優(yōu)秀庫等等。

項目大環(huán)境

我們生存在一個高度架構(gòu)為主的流量時代。高并發(fā),大流量,各種微服務(wù),以及中間件建設(shè)等等已經(jīng)是主流趨勢。

那么代碼層面的設(shè)計模式以及代碼規(guī)范性的地位,就有些微妙了。

筆者也見過不少項目,架構(gòu)師只去考慮是不是該“加機(jī)器,加中間件,加配置”等上層建設(shè)。由于團(tuán)隊成員水平斷檔,對代碼的要求幾乎為0,也沒有review等規(guī)則,能實現(xiàn)即可。

時間成本與敏捷開發(fā)

在敏捷開發(fā)場景,業(yè)務(wù)頻繁變動,項目快速迭代,這當(dāng)然也是因素之一。

比如常說的可以優(yōu)化if else策略模式,如果初期只有一個分支,你會用設(shè)計模式嗎?那么需求變動加了一個呢?如果又加了一個呢?

什么時間點(diǎn)選擇使用設(shè)計模式優(yōu)化代碼,或者用不用優(yōu)化,以及有沒有時間優(yōu)化都是個問題。

通常有經(jīng)驗的工程師,一般不會說出“這不就一行代碼嘛,一分鐘改完”這樣的話。

畢竟修改代碼,要思考全局性(是否其它代碼也有相同修改需求),正確性,以及分支影響性(是否影響其他邏輯的執(zhí)行)。

甚至也有公司對覆蓋率測試類有要求,所以用打字速度判定需求落地速度,并不是業(yè)內(nèi)人士的經(jīng)驗之談。

這樣時間成本也成為了一個因素。

人員流動

人員流動在互聯(lián)網(wǎng)不是一個稀奇的事情。

一方面是公司原因,隨著改革春風(fēng)吹滿地,已經(jīng)到了遍地“老板”的年代,一些公司,要求不合理,甚至條款都是違fa行為導(dǎo)致人才流失。

二是個人原因,水平高為高薪所走,水平低被低薪勸退。

那么不管那種原因,在人員頻繁流動下,代碼質(zhì)量要想做好,對管理上也是一種挑戰(zhàn)。

畢竟如果你接手一個邏輯復(fù)雜的龜派氣功代碼,業(yè)務(wù)邏輯還沒完全清晰的場景下,大多數(shù)人會老老實實的添加if else以完成需求。

| 分析

代碼規(guī)范

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護(hù)是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機(jī)驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機(jī)驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉