偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

碼農(nóng)是怎么提高設(shè)計能力的?

企業(yè)動態(tài)
當(dāng)我在工作中再次遇到復(fù)雜的需求時, 也努力地去做抽象,尋找本質(zhì)的東西,有一次竟然把業(yè)務(wù)操作抽象成二維坐標(biāo)系下點的移動,讓我喜不自勝,感受到了抽象的威力。

[[236672]]

 “欣哥,你是怎么提高設(shè)計能力的? ”

這個問題最近被人問及, 我回想了下這10多年學(xué)習(xí)歷程,并沒有發(fā)現(xiàn)一個確切的東西能幫助提升設(shè)計能力,更具體點是“面向?qū)ο蟮脑O(shè)計能力”。

我大學(xué)的時候?qū)W了幾門語言,也勉強做了幾個項目,但是都停留在能使用的層面,根本沒有考慮到可擴展性,重用性,靈活性,易讀,優(yōu)雅...... 等東西, 也不知道什么是設(shè)計模式, 估計大部分碼農(nóng)翻身的讀者都比我強得多。

剛工作的時候,一個搞Java的同學(xué)給我說,劉欣你知道嗎,現(xiàn)在模式很流行,我們都在搞模式。

模式? 正在抱微軟大腿的我是一臉懵逼。

回去趕緊搜,于是就發(fā)現(xiàn)了四人幫那本著名的《設(shè)計模式》,趕緊研讀,發(fā)現(xiàn)是霧里看花,水中望月,看不清楚。

這設(shè)計模式就如同一座高山,可望而不可及。 當(dāng)然用來吹牛還是可以的,吃飯時給組長說:我最近看到一本書,叫設(shè)計模式,里邊提出了兩條原則,實在是太好了。

“什么原則?”

“一條面向接口編程而不是面向?qū)崿F(xiàn)編程, 另外一條是優(yōu)先使用組合而不是繼承。”

雖然我洋洋得意,但是我心中明白,我也不知道這是啥意思。

后來看到閆宏寫的《Java與模式》一書 ,里邊舉了很多紅樓夢的例子,有點意思,大概知道了一些模式的寫法。

照葫蘆畫瓢,寫了個Iterator, 激動不已。沒成想到JDK中一看,人家早就寫好了。

轉(zhuǎn)入Java陣營以后,發(fā)現(xiàn)模式在這里確實比較提倡,不僅僅是標(biāo)準的23種設(shè)計模式,還有J2EE開發(fā)中用到的各種模式。

那就老老實實地學(xué)吧,不僅僅看書,還開始看源碼,當(dāng)時流行的有一個叫做Jive論壇,純用servlet和JSP寫的,現(xiàn)在看來可能是比較幼稚,但是它里邊用了很多的設(shè)計模式,比如單例,模板方法,代理,迭代器等等。

之前學(xué)習(xí)設(shè)計模式,看到的都是小打小鬧的小例子,不知道怎么用到項目中來,現(xiàn)在看到Jive,一下子看到設(shè)計模式在實戰(zhàn)中的鮮活的應(yīng)用,實在是大開眼界。

(由于時間太過久遠,感興趣的可以再翻翻Jive,但是不太建議再花太多的時間學(xué)習(xí)了)

后來發(fā)現(xiàn)了一本神書《敏捷軟件開發(fā),原則,模式與實踐》,***次講了面向?qū)ο笤O(shè)計的原則,其中還有一個薪水支付的案例,真是讓我大開眼界,一下子明白了“優(yōu)先使用組合而不是繼承"的道理。

此后又看了JUnit的源碼,再次感慨大牛把設(shè)計模式玩得爐火純青。

看了不少書和源碼以后,就想在工作中想找機會實戰(zhàn),無奈工作中增刪改查居多,在框架下填代碼,渾身的OO內(nèi)力無處宣泄,真是不爽。 (其實也沒多少內(nèi)力,把自己高估了。)

終于逮到一次機會,我負責(zé)的模塊業(yè)務(wù)邏輯非常復(fù)雜,我就想辦法把這一塊邏輯從增刪改查的框架中剝離處理,好好設(shè)計了一番,應(yīng)用了一些設(shè)計模式,效果還不錯,基本達到了OCP的原則:對修改封閉,對擴展開放。

各位同學(xué)也可以想一想,自己的工作中有沒有一些復(fù)雜的業(yè)務(wù)邏輯?能不能把他們單獨拎出來做個設(shè)計?

再挑戰(zhàn)下有難度的源碼吧,大家把Spring“吹噓”得神乎其神,一定得看看, 于是開始進入Spring源碼,這絕對是一次痛苦之旅,多如牛毛的class,深不可測的函數(shù)調(diào)用層次,把人搞得頭暈眼花,反復(fù)的調(diào)試,加上文檔的配合,總算走出了黑暗森林,也體會到了Spring設(shè)計的一些妙處,尤其是軟件開發(fā)最最重要的一點: 抽象。

當(dāng)我在工作中再次遇到復(fù)雜的需求時, 也努力地去做抽象,尋找本質(zhì)的東西,有一次竟然把業(yè)務(wù)操作抽象成二維坐標(biāo)系下點的移動,讓我喜不自勝,感受到了抽象的威力。

但是這樣“頓悟”時刻還是太少了。面向?qū)ο蟮脑瓌tS.O.L.I.D 聽起來很簡單,23種設(shè)計模式理解起來也不難,但是想把這些原則和模式在實踐中應(yīng)用好,那可就不容易了,很多時候我在面對復(fù)雜問題的時候也是非常犯愁,無法找到合適的接口和抽象,***做出的設(shè)計不盡如人意。

總結(jié)一下,想提升OO的設(shè)計能力,我的經(jīng)驗就是: 閱讀書籍, 閱讀源碼,再加上不斷地思考和實踐。

謹以此和大家共勉。

【本文為51CTO專欄作者“劉欣”的原創(chuàng)稿件,轉(zhuǎn)載請通過作者微信公眾號coderising獲取授權(quán)】

戳這里,看該作者更多好文

責(zé)任編輯:武曉燕 來源: 51CTO專欄
相關(guān)推薦

2023-03-19 16:15:33

CSS技巧開發(fā)

2018-06-20 09:35:43

碼農(nóng)科技開發(fā)

2013-08-22 10:10:31

2017-11-06 08:27:26

開發(fā)

2014-04-04 10:27:50

碼農(nóng)工作效率

2015-05-12 10:33:09

程序員代碼

2022-11-30 14:57:39

產(chǎn)業(yè)互聯(lián)網(wǎng)

2020-12-17 10:20:27

碼農(nóng)高薪計算機

2020-08-05 12:27:18

Go語言碼農(nóng)

2012-06-07 09:25:31

Visual Stud

2013-11-14 13:58:06

硅谷碼農(nóng)

2014-12-04 10:02:55

2015-05-12 10:15:15

程序員

2023-07-16 22:34:55

2020-09-30 11:14:24

AI碼農(nóng)架構(gòu)

2014-03-20 16:18:30

碼農(nóng)工作效率

2019-10-16 15:54:22

運維架構(gòu)技術(shù)

2016-04-05 15:23:35

CTO訓(xùn)練營,技術(shù)管理

2016-10-10 20:32:54

WebWindows 10設(shè)計

2020-05-08 10:06:12

碼農(nóng)開發(fā)行業(yè)
點贊
收藏

51CTO技術(shù)棧公眾號