我的程序人生——my first article in csdn blob
2024-07-21 02:06:39
供稿:網(wǎng)友
剛參加工作的時(shí)候,周圍的每個(gè)同事似乎都比自己年長(zhǎng),不知不覺(jué)同事中間大多數(shù)都成了小弟弟、小妹妹了,猛一回首,自己馬上就要邁入而立之年了。好了,廢話少說(shuō),談?wù)勥@些年來(lái)的軟件開(kāi)發(fā)心得體會(huì),同大家分享一下。
最初寫(xiě)程序是用foxpro,當(dāng)然談不上什么理論指導(dǎo),后來(lái)看了幾本關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)方面的書(shū),學(xué)到了范式這個(gè)概念,算是一個(gè)里程碑。中國(guó)的大學(xué)教育真是失敗,很多人計(jì)算機(jī)本科畢業(yè),連這個(gè)都不懂,寫(xiě)出來(lái)的程序簡(jiǎn)直慘不忍睹,曾經(jīng)見(jiàn)過(guò)一個(gè)家伙設(shè)計(jì)的程序,一個(gè)表有100多個(gè)字段,真是汗顏,居然還靠這個(gè)當(dāng)電腦部經(jīng)理,月薪16000!!!再后來(lái),1997年delphi1.0剛出不久的時(shí)候,好像java也是這個(gè)時(shí)候開(kāi)始在中國(guó)出現(xiàn),還有pb比這兩個(gè)出得略早些,internet也是這段時(shí)間慢慢在中國(guó)開(kāi)始普及,硬件方面則是p166,97年真是中國(guó)it發(fā)展的歷史時(shí)代啊。我選擇了delphi,主要原因是喜歡pascal的風(fēng)格吧。正是從這個(gè)年代開(kāi)始接觸對(duì)象這個(gè)東西,也是客戶機(jī)/服務(wù)器系統(tǒng)當(dāng)?shù)赖臅r(shí)候。當(dāng)時(shí)是java、delphi、vb的書(shū)混著看,總算是弄明白了繼承、多態(tài)這些概念。可是寫(xiě)起程序來(lái)似乎根本用不上,最多的還是過(guò)程式的思考方式。到了delphi3.0的時(shí)候,三層模型開(kāi)始滿天飛。ms有com、com+,borland有midas、data model,連sybase都號(hào)稱pb支持3層模型了,現(xiàn)在才總算明白其實(shí)這些老外都挺能吹的,尤其是搞it的。2000年——2002年這段時(shí)間看了幾本李維這個(gè)騙子的書(shū),我想很多人都讀過(guò)那幾本吧,其中我認(rèn)為唯一有價(jià)值的東西就是斷開(kāi)連接的數(shù)據(jù)集這種設(shè)計(jì)模式,其他的都是垃圾。不過(guò)說(shuō)個(gè)客觀點(diǎn)的話,李維后來(lái)又出了一本剖析vcl的書(shū),倒還是真的有點(diǎn)價(jià)值,就是出得太晚了。這段時(shí)間最大的遺憾就是沒(méi)有讀java在這方面的書(shū),也沒(méi)有關(guān)注java這方面的發(fā)展,時(shí)間都浪費(fèi)在李維這個(gè)騙子身上了,這段時(shí)間中間件也吹得挺兇的,連金蝶這種垃圾公司也嚷著要做,當(dāng)時(shí)也一直沒(méi)有搞明白這到底是個(gè)什么東西,直到幾年后研究了一下jboss才明白。一直到了02年,實(shí)在對(duì)這個(gè)3層模型以及com這些相關(guān)的概念沒(méi)有徹底搞清楚,就開(kāi)始讀uml、j2ee,好像有了點(diǎn)開(kāi)竅的感覺(jué),但是總感覺(jué)還缺一根線把這些東西串起來(lái),直到有一天在深圳書(shū)城看到了robert martin的敏捷軟件開(kāi)發(fā),因?yàn)榍岸螘r(shí)間在網(wǎng)上看到了不少設(shè)計(jì)模式、敏捷開(kāi)發(fā)、極限編程之類的名詞,就拿起這本書(shū)翻了翻,看了2頁(yè),我就斷定這正是我所需要的書(shū),立刻買(mǎi)回家一口氣讀完,有種頓悟的感覺(jué)。后來(lái)又開(kāi)始用c#,研究了幾個(gè)樣例程序,什么petshop啦,什么duwamish啦,總算是基本開(kāi)竅了。最后總結(jié)一下,歡迎各位網(wǎng)友一起探討。現(xiàn)在我們寫(xiě)程序都講究個(gè)什么對(duì)象化設(shè)計(jì),可是實(shí)際應(yīng)用起來(lái)很困難,究其根本來(lái)說(shuō)存在以下幾個(gè)障礙,對(duì)象同關(guān)系數(shù)據(jù)庫(kù)之間的障礙,對(duì)象同網(wǎng)絡(luò)、硬件性能之間的障礙,最后就是對(duì)象同以dataset為中心設(shè)計(jì)的data aware控件之間的障礙。java主要試圖用中間件解決上述問(wèn)題,ms則交給程序員自己了。所以用java編寫(xiě)數(shù)據(jù)庫(kù)程序,就得弄上一大堆的ejb,還要對(duì)付swing這種人不人,鬼不鬼的東西,實(shí)在不是什么好方法。用ms的東西,就要把對(duì)象化設(shè)計(jì)這個(gè)念頭先拋到一邊。反思一下,存在的就是合理的,在以數(shù)據(jù)為主體的程序中,是否真的有必要做出很徹底的對(duì)象化設(shè)計(jì),一個(gè)實(shí)體類的ejb到底有多大的實(shí)際意義呢?簡(jiǎn)單地用dataset來(lái)表示似乎也不錯(cuò)。所以我覺(jué)得對(duì)于相互邏輯關(guān)系比較復(fù)雜的對(duì)象,才有必要進(jìn)行徹底的對(duì)象化,否則就是過(guò)程化的老路子好了。