日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

90% 程序员都吃亏在这门技术上了,你呢!

發(fā)布時(shí)間:2024/8/23 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 90% 程序员都吃亏在这门技术上了,你呢! 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

老李一直懷疑自己是不是年紀(jì)大了,腦子跟不上了。

作為十幾年經(jīng)驗(yàn)的資深 Java 工程師,維護(hù)這公司產(chǎn)品的核心代碼的他,現(xiàn)在迭代產(chǎn)品的時(shí)候,經(jīng)常出 Bug 。

有時(shí)修復(fù)一個(gè) Bug 時(shí)間,比開(kāi)發(fā)一個(gè)需求的時(shí)間要長(zhǎng)很多,這是常有的事兒,更可怕的是,改完一個(gè) Bug ,又多出來(lái)幾個(gè) Bug,讓人吐血不止。

這樣的情況不在少數(shù),近幾次的更新都沒(méi)有按原計(jì)劃的時(shí)間完成,不但讓 Leader 對(duì)老李的能力產(chǎn)生懷疑,也讓他自己開(kāi)始懷疑自己。

這是產(chǎn)品迭代到一定時(shí)期,必然出現(xiàn)的問(wèn)題;還是自己年紀(jì)大了,在開(kāi)發(fā)時(shí)各種問(wèn)題沒(méi)有考慮周全,多年的開(kāi)發(fā)經(jīng)驗(yàn)都不能支撐新的需求。

中年危機(jī)加上職業(yè)瓶頸,老王覺(jué)得自己應(yīng)該回家修整一下?tīng)顟B(tài)了......

廢話,改 Bug 的痛苦,每個(gè)人都經(jīng)歷過(guò)…...

不管是系統(tǒng)維護(hù),還是是在現(xiàn)有系統(tǒng)中進(jìn)行迭代開(kāi)發(fā)的老司機(jī)們,這種痛苦經(jīng)歷,想必你們很熟悉吧:

當(dāng)需要修改一個(gè) Bug 的時(shí)候,面對(duì)一個(gè)類中成百上千行的代碼,沒(méi)有注釋,千奇百怪的方法和變量名字,層層嵌套的方法調(diào)用,混亂不堪的結(jié)構(gòu),不要說(shuō)準(zhǔn)確找到 Bug 所在的位置,就是要清晰知道一段代碼究竟是做了什么也非常困難,最終,改對(duì)了一個(gè) Bug,卻多冒出 N 個(gè)新 Bug;

同樣的情況,當(dāng)你拿到一份新的需求,需要在現(xiàn)有系統(tǒng)中添加功能的時(shí)候,面對(duì)一行行完全過(guò)程式的代碼,需要使用一個(gè)功能時(shí),不知道是應(yīng)該自己編寫(xiě),還是應(yīng)該尋找是否已經(jīng)存在的方法。

編寫(xiě)一個(gè)非常簡(jiǎn)單的新、刪、改功能,卻要費(fèi)盡九牛二虎之力,最終發(fā)現(xiàn),系統(tǒng)存在著太多的重復(fù)邏輯,閱讀、測(cè)試、修改非常困難。

在經(jīng)歷了這些痛苦之后,我們都會(huì)發(fā)出一個(gè)感慨:MDZZ,與其進(jìn)行系統(tǒng)維護(hù)和迭代開(kāi)發(fā),還不如重新設(shè)計(jì)開(kāi)發(fā)一個(gè)新的系統(tǒng)來(lái)得痛快……

改不完的 Bug,是「思想錯(cuò)誤」

當(dāng)你遇到,你應(yīng)該怎樣解決?

面對(duì)這一系列讓軟件陷入無(wú)底泥潭的問(wèn)題,基于面向?qū)ο笏枷氲念I(lǐng)域驅(qū)動(dòng)設(shè)計(jì)方法是一個(gè)很好的解決方法。

從事過(guò)系統(tǒng)設(shè)計(jì)的富有經(jīng)驗(yàn)的設(shè)計(jì)師們,對(duì)職責(zé)單一原則、信息專家、充血/貧血模型、模型驅(qū)動(dòng)設(shè)計(jì)這些名詞或概念應(yīng)該不會(huì)感到陌生。

我們可以發(fā)現(xiàn)領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的一大優(yōu)點(diǎn):系統(tǒng)高度模塊化,代碼重用度高,不會(huì)出現(xiàn)太多的重復(fù)邏輯。

從戰(zhàn)略到戰(zhàn)術(shù),領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(Domain Driven Design,DDD)給出了諸多關(guān)于軟件架構(gòu)、設(shè)計(jì)、建模與編碼的方法和模式,以用于應(yīng)對(duì)業(yè)務(wù)復(fù)雜度。

對(duì)于學(xué)習(xí) DDD 的開(kāi)發(fā)人員而言,第一重要的不是掌握 DDD 的模式,而是要改變分析思維與設(shè)計(jì)思維的方式。將這種思維方式運(yùn)用到軟件項(xiàng)目開(kāi)發(fā)過(guò)程中,就是我所提到的「領(lǐng)域模型驅(qū)動(dòng)設(shè)計(jì)」,它的核心內(nèi)容可以通過(guò)層層推進(jìn)的形式匯集為如下三句話:

  • 領(lǐng)域為分析建模的驅(qū)動(dòng)力

  • 場(chǎng)景為設(shè)計(jì)建模的驅(qū)動(dòng)力

  • 任務(wù)為實(shí)現(xiàn)建模的驅(qū)動(dòng)力

如何理解這三句話?

當(dāng)你開(kāi)始領(lǐng)域模型驅(qū)動(dòng)設(shè)計(jì)時(shí),必須在分析建模階段拋開(kāi)實(shí)現(xiàn)技術(shù)對(duì)你的影響,與需求分析人員、測(cè)試人員一起單純針對(duì)「領(lǐng)域」進(jìn)行分析建模,即提煉與抽象領(lǐng)域概念,并以統(tǒng)一語(yǔ)言和模型的形式來(lái)表達(dá)。

在設(shè)計(jì)建模階段,圍繞著一個(gè)完整的「場(chǎng)景」開(kāi)展設(shè)計(jì)工作。需求分析人員為「場(chǎng)景」編寫(xiě)用戶故事;測(cè)試人員為「場(chǎng)景」編寫(xiě)驗(yàn)收標(biāo)準(zhǔn);開(kāi)發(fā)人員則開(kāi)始解剖「場(chǎng)景」,將其分解為組合任務(wù)與原子任務(wù),然后各自分配給不同的角色構(gòu)造型。

到了實(shí)現(xiàn)建模階段,就針對(duì)這些任務(wù)定義測(cè)試用例,開(kāi)始測(cè)試驅(qū)動(dòng)開(kāi)發(fā),由內(nèi)至外到達(dá)應(yīng)用服務(wù)時(shí),再將它們集成起來(lái)。顯然,領(lǐng)域模型驅(qū)動(dòng)設(shè)計(jì)就是針對(duì)領(lǐng)域開(kāi)展的「合而分分而合」的解構(gòu)過(guò)程。

同時(shí),必須謹(jǐn)記:領(lǐng)域模型驅(qū)動(dòng)設(shè)計(jì)的基礎(chǔ)是限界上下文。在領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的戰(zhàn)略階段,同樣是一個(gè)「合而分分而合」的解構(gòu)過(guò)程:將領(lǐng)域分解為限界上下文,再通過(guò)上下文映射聯(lián)合限界上下文共同實(shí)現(xiàn)多個(gè)領(lǐng)域場(chǎng)景。

以上內(nèi)容正是我言猶未盡想要表達(dá)的精髓。學(xué)習(xí)領(lǐng)域驅(qū)動(dòng)設(shè)計(jì),就需要抓住 DDD 的根本和精髓。你需要理解什么是限界上下文,它帶來(lái)的價(jià)值是什么;你需要理解如何進(jìn)行領(lǐng)域建模,統(tǒng)一語(yǔ)言在其中扮演了什么樣的角色;你需要理解為何領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)提倡以領(lǐng)域?yàn)轵?qū)動(dòng)力,為何需要領(lǐng)域?qū)<覅⑴c到項(xiàng)目開(kāi)發(fā)中來(lái)。

提升了對(duì)這些內(nèi)容的認(rèn)識(shí)后,再去學(xué)習(xí) DDD 給出的設(shè)計(jì)模式,學(xué)習(xí)我給出的固化設(shè)計(jì)過(guò)程,如場(chǎng)景驅(qū)動(dòng)設(shè)計(jì)。然后找三兩個(gè)不曾實(shí)施 DDD 的項(xiàng)目,尋兩三個(gè)實(shí)施了 DDD 的項(xiàng)目,相互對(duì)比其模型與代碼,你絕對(duì)會(huì)有一種醍醐灌頂?shù)母杏X(jué)。當(dāng)然,這些都需要你沉下心來(lái)細(xì)心體會(huì),認(rèn)真思考,還需要你廣泛涉獵更多軟件設(shè)計(jì)與開(kāi)發(fā)的知識(shí),如此方能打通 DDD 的任督二脈

DDD 不是一門(mén)容易衰亡的軟件方法學(xué),反而越來(lái)越被行業(yè)所認(rèn)可,薪資待遇也是水漲船高超過(guò)了大部分平均值。我從 2017 年 11 月寫(xiě)下本專欄的第一個(gè)字到現(xiàn)在完成整個(gè)專欄,已有兩年多的時(shí)間了,好在 DDD 在這兩年后依然算是一門(mén)顯學(xué),在微服務(wù)與中臺(tái)光芒的映襯下,DDD 也變得越來(lái)越耀眼

這一路走來(lái),讀者們給了我莫大的鼓勵(lì)。作為全網(wǎng)首個(gè) DDD 專欄,已有超過(guò)? 5000 位同學(xué)訂閱學(xué)習(xí)了。大家每天都在群里進(jìn)行各種交流分享,畢竟自己悶頭學(xué)不如群策群力,一起給出解決方案更高效。

_

_

_

_

_

_

_

_

_

_

_

_

_

_

_

_

_

_

_

_

如今,專欄終于完成了!《戰(zhàn)略篇》一共 34 章,15 萬(wàn) 5 千字;《戰(zhàn)術(shù)篇》一共 71 章,35 萬(wàn) 1 千字;合計(jì) 105 章,共 50 萬(wàn) 6 千余字,加上兩篇開(kāi)篇詞與這篇可以稱為寫(xiě)后感的后記,共 108 章,算是湊齊了一百單八將。如此成果也足可慰藉我為之付出的兩年多艱辛?xí)r光!

如果你想從此寫(xiě)代碼再也碰不到?Bug

↓↓↓這門(mén)專欄非常適合你!↓↓↓

限時(shí)特價(jià)中

原價(jià)?168?元,限時(shí)立享?7?折!

↓下單再送?7?門(mén)萬(wàn)人訂閱的編程課↓

118 元 = 108 章專欄?7 門(mén)贈(zèng)送編程課?1V1 答疑?源碼

(迄今為止最劃算的訂閱時(shí)間)

現(xiàn)在訂閱你能獲得什么?

1. 專業(yè)老師陪伴式教學(xué)

張逸:曾就職于中興、惠普、中軟國(guó)際等公司的高級(jí)軟件工程師

張逸老師將全程陪你一起吃透每章節(jié)內(nèi)容,不再是你一人悶頭去深究那些看不懂的知識(shí)點(diǎn),讓你能更高效快速的將所學(xué)的內(nèi)容運(yùn)用到工作項(xiàng)目中,讓你的領(lǐng)導(dǎo)同事大吃一驚。

2. 360度全方位答疑服務(wù)

每個(gè)專欄都配有多個(gè)答疑交流群便于你們提問(wèn),老師幾乎全程在線解答。群內(nèi)還會(huì)有小助手負(fù)責(zé)日常整潔,讓你在交流學(xué)習(xí)的同時(shí)不受到外界干擾。

3. 額外的福利

你不僅能以 7 折的優(yōu)惠價(jià)格擁有戰(zhàn)術(shù)?戰(zhàn)略 2 門(mén)合訂版專欄,現(xiàn)在下單還將免費(fèi)得到?7?門(mén)編程專欄。

如果你想從此寫(xiě)代碼再也碰不到?Bug

↓↓↓這門(mén)專欄非常適合你!↓↓↓

限時(shí)特價(jià)中

原價(jià)?168?元,限時(shí)立享?7?折!

↓下單再送?7?門(mén)萬(wàn)人訂閱的編程課↓

118 元 = 108 章專欄?7 門(mén)贈(zèng)送編程課?1V1 答疑?源碼

(迄今為止最劃算的訂閱時(shí)間)


訂閱須知

1. 怎樣獲取福利?

訂閱專欄后可聯(lián)系小助手「GitChatty6」,回復(fù)口令即可快速入群獲得。

2. 如何閱讀專欄?

本專欄可在 GitChat 服務(wù)號(hào)、App 及網(wǎng)頁(yè)端上多端閱讀。

3. 專欄內(nèi)容有多少?

本專欄為圖文內(nèi)容,總共 108 篇課時(shí)。

4. 專欄有效期多久?

本專欄一經(jīng)購(gòu)買(mǎi),即可享受永久閱讀權(quán)限。


? ? ? ? ?

點(diǎn)擊閱讀原文,立即搶購(gòu)!

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的90% 程序员都吃亏在这门技术上了,你呢!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。