披著盛裝的稻草人-- 編程中的隨筆
1 不是使用了spring ,hibernate 等企業(yè)級(jí)產(chǎn)品的框架,我們就是企業(yè)級(jí)產(chǎn)品了。不是我們采用了新瓶裝舊酒的web 2.0 我們就走在技術(shù)的前沿了。我門(mén)所需要的是一個(gè)高性能的,健壯的 產(chǎn)品,是一個(gè)可以降低我們實(shí)施成本,一個(gè)可以樹(shù)立我們企業(yè)品牌的產(chǎn)品。在這里我不得不對(duì)我們產(chǎn)品的所謂的架構(gòu)們產(chǎn)品疑問(wèn),Archetectures,what are you doing?
2 在實(shí)現(xiàn)框架代碼的時(shí)候,當(dāng)你對(duì)采用那種實(shí)現(xiàn)方式猶豫不決的時(shí),換個(gè)角度,想一想如果你是程序員,喜歡怎么這些框架。在實(shí)現(xiàn)框架的時(shí)候一定要考慮程序員是否能夠理解你寫(xiě)框架的思路,除非萬(wàn)不得已不要用一些自以為很高明很巧妙,然而卻很晦澀難懂的方法,那樣的框架,程序員至少合格的程序員是不愿意使用的。我想程序員和編碼工人最大的區(qū)別就是程序員不僅要知其然,還要知其所以然。
3 只有在不斷實(shí)踐中,才能激發(fā)你不斷的求知欲。只有把學(xué)到的知識(shí)不斷的應(yīng)用道實(shí)踐中,你才能在學(xué)習(xí)中得到滿(mǎn)足。不要為了學(xué)習(xí)而學(xué)習(xí)(學(xué)院派,不好聽(tīng)點(diǎn)就是紙上談兵),而是要從實(shí)際問(wèn)題出發(fā),在解決問(wèn)題的過(guò)程中不斷深入,不斷總結(jié),所以說(shuō),當(dāng)你離開(kāi)了編程的第一線,你將失去學(xué)習(xí)編程知識(shí)的欲望。當(dāng)然如果你愿意,在別的領(lǐng)域還有更廣闊的天空,但是請(qǐng)不要總是說(shuō)自己原來(lái)編程怎么怎么,其實(shí)你已經(jīng)被三振出局了。
4 想外行一樣思考,想專(zhuān)家一樣實(shí)踐,一本書(shū)的名字,雖然書(shū)沒(méi)有看過(guò),但她的名子就已經(jīng)非常有意思了。這豈不就是我們作需求,和作架構(gòu)時(shí)的座右銘嗎?既能象“外行”一樣的站在客戶(hù)的角度思考問(wèn)題,又能象“專(zhuān)家”一樣參與到整個(gè)產(chǎn)品的開(kāi)發(fā)和實(shí)施當(dāng)中,在實(shí)踐中不斷提高自我。然而,不幸的是許許多多的所謂的架構(gòu)師,系統(tǒng)分析員們卻正向著相反的方向邁進(jìn)。“真正”的做到了,象“專(zhuān)家”一樣思考,象“外行”一樣實(shí)踐,可悲呀可悲。
5設(shè)計(jì)做到什么樣才叫做到位呢。我想只有真正的開(kāi)發(fā)者才有權(quán)利發(fā)言。只有有它們才是設(shè)計(jì)的真正使用者和受害者。因?yàn)榫臀宜退?jiàn),絕大多數(shù)設(shè)計(jì)都是設(shè)計(jì)者自己的游戲(當(dāng)然,我可能是井底之蛙了沒(méi)有見(jiàn)過(guò)什么好的設(shè)計(jì)),程序員所開(kāi)發(fā)往往還是對(duì)著原形自己再進(jìn)行一遍設(shè)計(jì),且不說(shuō)額外增加了多少工作量,浪費(fèi)了多少時(shí)間,就工作質(zhì)量而言,也是差強(qiáng)人意。畢竟大多數(shù)情況下,設(shè)計(jì)者或稱(chēng)為架構(gòu)師的在技術(shù)方面的經(jīng)驗(yàn)都更為豐富,對(duì)業(yè)務(wù)的理解也更為深入,另外由一個(gè)人進(jìn)行設(shè)計(jì)在功能復(fù)用,和整體性能方面的考慮也更完整一些。但怎么做才能熊掌和魚(yú)兼得呢?下面我發(fā)表一下我個(gè)人的看法:
? 1 代碼就是最好的設(shè)計(jì),這句話不是我說(shuō)的,是 xp開(kāi)發(fā)屆 中的一位大牛說(shuō)的。之所以在這里引用別人的觀點(diǎn),并不是自己是一個(gè)xp 的fans,也并不時(shí)完全贊同xp 的理論,我只是覺(jué)得這句話得太對(duì)了,對(duì)程序員來(lái)說(shuō)什么設(shè)計(jì)比代碼讀起來(lái)更親切呢?。其實(shí)設(shè)計(jì)無(wú)非是向開(kāi)發(fā)所著傳達(dá)設(shè)計(jì)者的思想,告訴開(kāi)發(fā)者系統(tǒng)需要開(kāi)什么個(gè)對(duì)象,具有什么屬性和行為,它們之間的調(diào)用關(guān)系又如何。我們?cè)谠O(shè)計(jì)文檔中經(jīng)常使用的方法就是有class 圖,協(xié)作圖,和順序圖對(duì)上面所提到的進(jìn)行描述。然而結(jié)果呢,面對(duì)這大量的令人畏懼的抽象圖表,開(kāi)發(fā)者可選擇的也只有是“重整江河待后生了”。想想,這樣的設(shè)計(jì)和代碼能夠同步嗎,這樣的設(shè)計(jì)文檔還有什么用呢?所以說(shuō)與其是這樣還不如把設(shè)計(jì)變成代碼,如對(duì)象屬性可以這直接在代碼中體現(xiàn),方法可以只定義接口,實(shí)現(xiàn)方式可以作為代碼的注釋?zhuān)驅(qū)懶枨蠓治鲇美频膩?lái)一步一步說(shuō)明程序是需要怎樣調(diào)用。當(dāng)客戶(hù)要求設(shè)文檔的時(shí)候,只需要提出javadoc就可以了,而其保證和代碼同步。而開(kāi)發(fā)者呢,在開(kāi)發(fā)前需要閱讀用例,了解需求,然后在設(shè)計(jì)者已經(jīng)搭好的代碼框架中進(jìn)行開(kāi)發(fā)就可以了。如果需要修改的話,不用在去設(shè)計(jì)文檔中更改,只需要修改一下代碼注釋就可以了,(程序員是比較懶的,不怎么愿意寫(xiě)寫(xiě)文檔的)。當(dāng)然了,讓?xiě)卸璧某绦騿T能夠自覺(jué)地寫(xiě)好文檔也不是一件容易事,下面也許能給你提供一個(gè)好的方法
? 2 交差開(kāi)發(fā)能夠幫助完成最好的設(shè)計(jì)文檔。
? 3 設(shè)計(jì)者在開(kāi)發(fā)階段還作什么呢??????????????????
待續(xù)???????????????????????????????????????????????????????????????
posted on 2006-10-11 14:36 康文 閱讀(242) 評(píng)論(0) 編輯 收藏 所屬分類(lèi): 軟件工程