第一篇:軟件開發(fā)實(shí)習(xí)心得
軟件開發(fā)實(shí)習(xí)心得
參加軟件開發(fā)實(shí)習(xí)的同學(xué),你們從中收獲了哪些實(shí)習(xí)心得?不妨分享一下吧!以下是軟件開發(fā)實(shí)習(xí)心得,歡迎閱覽!
軟件開發(fā)實(shí)習(xí)心得1
不知不覺,在XX實(shí)習(xí)的日子快過去半個(gè)月了,記得剛來XX的頭幾天,感覺非常不適應(yīng)。首先是環(huán)境:這里吃的東西很貴,而且這里的物價(jià)很高。其次是XX人:XX人辦事的效率很高,這就是鐵人的精神吧。
對于以上種種,待了3,4天基本就適應(yīng)了,難怪一些長輩老是說:習(xí)慣了,就好了。
來的第一天,我們聽了付X萍老師講了一節(jié)課,可以說完全不知所云,但還是可以聽到一些東西的,譬如:工作環(huán)境的適應(yīng),人與人之間的交際,處理各種事情的能力,其中最重要的就是養(yǎng)成良好的工作習(xí)慣。有良好的工作習(xí)慣,才會被上司,老板和同事認(rèn)可,將來也會比同輩有著更快更多的升職機(jī)會,而且一個(gè)良好的工作習(xí)慣,無論你從事哪個(gè)行業(yè),都是受用終生的。然后,就是認(rèn)識我們的董亮老師了,一個(gè)可親可愛的老師,傳說中他們一個(gè)月會賺十幾萬呢!天文數(shù)字,望塵莫及啊。
在隨后的一段時(shí)間里,我們被分為了八組,每組六七個(gè)人,有一個(gè)組長帶領(lǐng)。我們組織作一個(gè)項(xiàng)目論壇,在第二,第三個(gè)禮拜感覺沒有剛來時(shí)那么拘謹(jǐn)了,我更明顯感覺到自我計(jì)劃,制定目標(biāo)的重要性了。在我們犯錯(cuò)誤的時(shí)候,老師會懲罰我們,陳發(fā)的方式很另類唱歌或者講笑話,不算是體罰大事可以達(dá)到對我們的約束。然而,歇息期間有組織我們做游戲,看似很簡單的游戲其實(shí)是想培養(yǎng)我們合作意識。
在實(shí)習(xí)的過程中,我深刻的體會到了三點(diǎn):第一,項(xiàng)目是以迎合客戶和使用者為目的的,不可能像教師那樣為我們制定一套教學(xué)計(jì)劃。想要知道些什么,渴望懂得些什么,全要靠你自己想學(xué),你自己不問,沒人會主動來告訴你。第二,紙上得來終覺淺,絕知此事要躬行!在短暫的實(shí)習(xí)過程中,讓我深深的感覺到自己在實(shí)際運(yùn)用中的專業(yè)知識的匱乏,在行業(yè)中的經(jīng)驗(yàn)真的很重要。
第三,能更早的接觸你所在行業(yè)的真實(shí)情況。不出來自己轉(zhuǎn)一圈,根本不知道自己學(xué)的一些專業(yè)知識,哪些是十分重要,十分實(shí)用的。就比如說英語。以前聽老師說過,聽朋友也說過,將來工作了,英語相當(dāng)有用,外企就更不用說了。當(dāng)時(shí)沒什么感覺,但當(dāng)我頻繁的看到一打打英文資料手冊、幫助文檔時(shí),我已經(jīng)切身地,的的確確地感受到英語的重要性。
這次實(shí)訓(xùn)讓我學(xué)到的東西太多,使我受益非淺,它讓我知道了工作上的辛
苦,讓我知道工作并不像在學(xué)校里學(xué)習(xí)一樣輕松。不過,雖然辛苦了點(diǎn),但能讓我學(xué)到不同的東西、很充實(shí),我心里還是高興的。人非生而知之,要學(xué)得知識,一靠學(xué)習(xí),二靠實(shí)踐。沒有實(shí)踐,學(xué)習(xí)就是無源之水,無本之木。以上就是我在成都的進(jìn)行實(shí)訓(xùn)的心得和感受。不到半年的時(shí)間就將步入社會的我們,面臨是繼續(xù)深造,還是就業(yè)的壓力,我想我們更應(yīng)該把握住最后的一段時(shí)間,充實(shí)、完善自我,爭取做一名出色的大學(xué)生!對于這次實(shí)習(xí),我很珍惜也很懷念。
軟件開發(fā)實(shí)習(xí)心得2
本人自XX年9月份參加工作至今, 六個(gè)月的實(shí)習(xí)時(shí)間已經(jīng)結(jié)束。在這段時(shí)間里, 在領(lǐng)導(dǎo)和同事們的悉心關(guān)懷和指導(dǎo)下, 通過自己的不懈努力, 在各方面都取得了進(jìn)步。
實(shí)踐讓我的技能不斷增長, 工作能力不斷加強(qiáng)。剛開始工作的時(shí)候, 發(fā)現(xiàn)自己以前在學(xué)校學(xué)習(xí)的知識很死, 知識
面很窄, 以前做的練習(xí)項(xiàng)目的實(shí)用性也不是很好。在開始的幾周公司給我們實(shí)習(xí)員工培訓(xùn)了xxxx平臺的使用, 通過這次培訓(xùn)使我認(rèn)識到xxxx平臺的優(yōu)勢, 可以大大提高軟件開發(fā)效率
隨后我就加入到xxxxx稅源控管系統(tǒng)項(xiàng)目的開發(fā)中, 成為開發(fā)小組中的一員。在項(xiàng)目開發(fā)過程中一邊是同事們的悉心指導(dǎo), 一邊是自己反復(fù)琢磨與理解, 幾個(gè)月下來大大提高了自己業(yè)務(wù)和技術(shù)兩方面的技能, 已經(jīng)能夠比較熟練的掌握基本的工作方法和一些技巧, 而且能夠獨(dú)立完成一些模塊的開發(fā)。
通過實(shí)踐, 我解決實(shí)際問題的能力得到了很好的鍛煉。工作中也遇到了很多的以前沒有遇到過的新技術(shù), 面對技術(shù)難題我總是直接面對, 沒有逃避, 也因此自學(xué)了好多新的技術(shù), 大大提高了自己的自學(xué)能力, 也加深了對自己工作要負(fù)責(zé)的信念。在項(xiàng)目開發(fā)過程中也遇到了一些自己確實(shí)無法解決的困難, 在經(jīng)理和同事的幫助下也順利的解決了,在此表示感謝。
在開發(fā)團(tuán)隊(duì)中, 加強(qiáng)了自己的團(tuán)結(jié)精神和集體感, 對工作認(rèn)真負(fù)責(zé), 對團(tuán)隊(duì)認(rèn)真負(fù)責(zé)。通過這個(gè)項(xiàng)目不僅學(xué)習(xí)到了很多技術(shù)也了解了整個(gè)項(xiàng)目的大體流程, 從需求分析、數(shù)據(jù)庫設(shè)計(jì)、詳細(xì)設(shè)計(jì)、代碼編寫、測試、項(xiàng)目維護(hù)等方面, 使自己不僅從一個(gè)代碼編寫人員的角度還從一個(gè)整體的角度來看整個(gè)項(xiàng)目開發(fā), 加深了軟件開發(fā)概念的理解。
不斷學(xué)習(xí)使我對工作有了更進(jìn)一步的認(rèn)識和了解。不懂就學(xué)、就問, 是一切進(jìn)步取得的前提和基礎(chǔ)。因?yàn)橛写髮W(xué)專業(yè)課的底子和參加過專門的java培訓(xùn)使我在工作過程中遇到的技術(shù)知識能更快的理解和掌握。工作中時(shí)常遇到新的問題, 就需要查閱相關(guān)資料, 請教同事和經(jīng)理, 一個(gè)問題一個(gè)問題的解決, 一個(gè)困難一個(gè)困難的克服, 不僅將原有知識溫習(xí)鞏固, 產(chǎn)生新的理解, 而且學(xué)到很多新知識, 有了許多新的認(rèn)識。但某些認(rèn)識都還是膚淺的, 還需要我在實(shí)踐當(dāng)
中去不斷深入地理解。
現(xiàn)場開發(fā)與維護(hù)使我不僅從一個(gè)開發(fā)人員的角度而且從客戶的角度去思考問題。在項(xiàng)目的開發(fā)后期, 也就是項(xiàng)目即將上線的階段我與其他幾位同事被派往現(xiàn)場去開發(fā)與維護(hù)項(xiàng)目。以前的開發(fā)都是根據(jù)需求分析來進(jìn)行, 功能要求一般在分析里面都寫的很清楚, 但是在現(xiàn)場開發(fā)直接面對客戶, 客戶提出的需求一開始只是一個(gè)大體的功能描述, 如何將這個(gè)只是語言描述的功能轉(zhuǎn)化為技術(shù)實(shí)現(xiàn)需要很強(qiáng)的抽象能力和對業(yè)務(wù)的深入理解, 這個(gè)過程大大鍛煉了自己的綜合能力。在第一時(shí)間接觸客戶的需求, 從客戶的角度思考問題, 只有更了解客戶需求才能更合理的設(shè)計(jì)軟件的結(jié)構(gòu), 功能。
軟件開發(fā)實(shí)習(xí)心得3
短短兩周的很快就過去了,在xx的實(shí)習(xí)馬上就要過去了。雖然只有短短的兩周,但我學(xué)會了很多知識,熟悉了軟件開發(fā)的流程,也很好的增強(qiáng)了自己 的動手能力。
我是一名即將大四的學(xué)生,縱觀現(xiàn)在的就業(yè)形勢,國家高校的擴(kuò)招,世界金融危機(jī)的橫掃,大學(xué)生應(yīng)該有一種居安思危的緊迫感,特別是對已經(jīng)度過兩年大學(xué)的我來說,畢業(yè)并不是一個(gè)遙遠(yuǎn)的詞匯。寶劍鋒從磨礪出,梅花香自苦寒來,缺少了平時(shí)的鍛煉,沒有厚積當(dāng)然不能有薄發(fā)。首先我得有思想上的緊迫感,在學(xué)校學(xué)習(xí)的都是理論知識,實(shí)踐經(jīng)驗(yàn)則是少之又少。綜合能力強(qiáng)的人才才是這個(gè)社會需要的,成長成為社會需要的人才是我的個(gè)人奮斗目標(biāo)。有了強(qiáng)大的精神動力,有了堅(jiān)如磐石的毅力,相信成功并不遙遠(yuǎn)。
首先,我的自我能力得到了加強(qiáng)。在實(shí)習(xí)的前幾天主要進(jìn)行的是與JAVA有關(guān)知識的學(xué)習(xí)及預(yù)備知識的普及。在這之前由于種種原因我沒有學(xué)習(xí)過JAVA,所以對于J我?guī)缀跻粺o所知。但我曾經(jīng)學(xué)習(xí)過C++,所以對語言的理解和接受能力還不算太慢,盡管老師講解
速度較快但我還是盡量跟上老師的速度。在這個(gè)過程中我學(xué)會一種自學(xué)方法可以在第一遍時(shí)不求甚解,先了解知識框架,之后再在使用的過程中不斷加強(qiáng)對知識的理解,從而較快的學(xué)會知識并應(yīng)用于實(shí)踐。
其次我的實(shí)際的操作能力得到了加強(qiáng)。知識講解告一段落后我們就進(jìn)入了緊張而又短暫的項(xiàng)目中。但不得不說剛開始就碰了一鼻子灰代碼書寫總是出錯(cuò)。由于對原理理解不夠透徹,語言使用缺乏足夠經(jīng)驗(yàn)所以進(jìn)度極慢。在經(jīng)過多次的討論后我們對項(xiàng)目理解逐漸深入,所以在此投入的過程就比較順利了。在這個(gè)過程中我明白了實(shí)踐和理論的差距及二者不可分割的關(guān)系。
最后是團(tuán)隊(duì)協(xié)作能力的提高。在整個(gè)過程中團(tuán)隊(duì)協(xié)作發(fā)揮著不可替代的作用。從在剛拿到項(xiàng)目時(shí)對項(xiàng)目進(jìn)行分析,然后進(jìn)行分工,之后就開始工作,既各干各的又不失默契的合作。在這個(gè)過程中我們誰遇到問題會互相幫助解決提高
了工作效率。由于各種原因,我們這組也存在些問題(自己編)。
這次實(shí)習(xí)拉近了我就和社會的距離,也讓自己在實(shí)踐中開拓了視野,增長了才干。社會和大學(xué)一樣也是受教育和學(xué)習(xí)的地方,在(寫實(shí)習(xí)地)的實(shí)習(xí)我收獲頗豐,再次感謝實(shí)習(xí)期間各位老師的指導(dǎo)教誨,你們給我的知識財(cái)富將讓我受益終生。但是我知道學(xué)無止境,僅僅這段時(shí)間的學(xué)習(xí)還是不夠的,在以后的生活中我會繼續(xù)努力學(xué)習(xí),培養(yǎng)自己能力,進(jìn)一步完善自己。
第二篇:軟件開發(fā)實(shí)習(xí)心得
軟件開發(fā)實(shí)習(xí)心得
一直以來期望從事自己喜歡的事業(yè)的我,對軟件開發(fā)有者及大的興趣,可由說種種原因使我從事工作以來走了好幾年彎路,心中的夢想遲遲不能得以實(shí)現(xiàn),可程序員的夢想從來沒有從我的心中抹去,但這扇大門好像并沒有向我敞開,今天,貴公司給了我敲開這扇大門的機(jī)會,讓我真實(shí)體驗(yàn)了程序員的誕生過程。早就聽說,程序員的前幾個(gè)月是最苦的,可從來沒有感受到,海馬實(shí)習(xí)基地讓我提前感受到了剛剛進(jìn)入軟件行業(yè)的壓力和困惑,再也沒有在自己家里隨便寫段小程序后的那種“自豪”感了。要面對每天必須面對的問題,再也不可能以“逃避”而了之了。也讓我感覺到做為一個(gè)程序員所應(yīng)該具備的基本素質(zhì)在這不到一個(gè)月的實(shí)習(xí)過程中也讓我深深體會到了作為一個(gè)合格的程序員應(yīng)該具備的基本素質(zhì)。
團(tuán)隊(duì)精神和協(xié)作能力是程序員應(yīng)該具備的基本素質(zhì),最近的工作中讓我深深休會到了這一點(diǎn),由于小組成員配合不好,使本來很方便的cvs給自己的工作帶來的及大的麻煩,一不小心自己寫的的東西就會被小組別的成員在上傳文件的時(shí)候給覆蓋掉,一整天的工作可能就這樣被反工,我們小組這次就是因?yàn)閰f(xié)作不好,導(dǎo)致各模塊之間不法連接,給工作帶來了及大的麻煩,消耗了大量的勞動力還沒有提高工作效率。這使我深深的體會到:一個(gè)成功商業(yè)性軟件的開發(fā)必須有一個(gè)有強(qiáng)大凝聚力的團(tuán)隊(duì),個(gè)人的力量是有限的,團(tuán)隊(duì)精神和良好的協(xié)作會使我們做出優(yōu)秀的軟件。
良好的文檔是正規(guī)研發(fā)流程中非常重要的環(huán)節(jié),作為代碼程序員,30%的工作時(shí)間寫技術(shù)文檔是很正常的,缺乏文檔,一個(gè)軟件系統(tǒng)就缺乏生命力,在未來的查錯(cuò),升級以及模塊的復(fù)用時(shí)就都會遇到極大的麻煩。這次的這個(gè)小小的項(xiàng)目,就因?yàn)槲臋n上的一點(diǎn)點(diǎn)理解錯(cuò)誤讓我們花了很大的工夫去改代碼,改頁面。很慶幸的是,這是一個(gè)小項(xiàng)目,要是大項(xiàng)目,這種問題可能就會導(dǎo)致大量的代碼修改,可見文檔在一個(gè)項(xiàng)目中起者巨大的做用。
此外,良好的代碼編寫習(xí)慣,不但有助于代碼的移植和糾錯(cuò),也有助于不同技術(shù)人員之間的協(xié)作。作為一個(gè)程序員,對需求的理解能力也是很重要的,只有真正理解了一個(gè)模塊的作用,才會寫出高效率的代碼,才能使整個(gè)軟件項(xiàng)目作出來更加優(yōu)秀,具備更好的安全性和穩(wěn)定性,我在寫代碼的過程中就遇到了需求理解上的問題,使得寫出來的代碼功能不全,幸好不是給客戶發(fā)現(xiàn)在,要不,這個(gè)軟件的商業(yè)價(jià)值可能就會打折扣了。單元測試對于一個(gè)程序員來說是不可不做的一項(xiàng)工作,不做好測試就會給后期的集成工作帶來麻煩,往往為了一個(gè)小問題會讓我們查找好多模塊,給后期工作帶來很大麻煩。
這一段時(shí)間的工作也讓我明白了一點(diǎn):一個(gè)優(yōu)秀的程序員必須不斷的學(xué)習(xí),隨時(shí)總結(jié),找到自己的不足,這樣逐步提高,才能讓自己很快的成長起來。建站俠客 發(fā)表于 2008-4-28 10:19
對軟件開發(fā)的一點(diǎn)心得體會
一、前期規(guī)劃:
我理解的前期規(guī)劃是:在市場人員們匯總一個(gè)需求提交給產(chǎn)品專家?guī)ьI(lǐng)的產(chǎn)品經(jīng)理團(tuán)隊(duì),然后經(jīng)過這個(gè)團(tuán)隊(duì)根據(jù)公司具體情況再次分析和規(guī)劃出一個(gè)最終需求文檔。
這個(gè)需求文檔應(yīng)當(dāng)首先提交給技術(shù)研發(fā)部門的負(fù)責(zé)人以及核心開發(fā)人員。由開發(fā)團(tuán)隊(duì)對其進(jìn)行技術(shù)和風(fēng)險(xiǎn)分析。如果對此需求統(tǒng)一有異議的地方,需要返回給產(chǎn)品團(tuán)隊(duì),重新修正需求。反復(fù)如此,直至需求完善準(zhǔn)確,細(xì)致,清晰。
前期規(guī)劃就像高樓的地基,如果馬馬虎虎,就算是一塊磚塊沒擺好都可能導(dǎo)致整個(gè)高樓建設(shè)的失敗。在規(guī)劃中我認(rèn)為,交流永遠(yuǎn)是需要雙方積極主動,能認(rèn)真聽取每個(gè)人的建議。前期工作思維不慎重,不細(xì)致,不認(rèn)真,不夠完善,將產(chǎn)生連鎖效應(yīng)直接導(dǎo)致整個(gè)工程和項(xiàng)目的失敗。
這種失敗可能表現(xiàn)為:第一種,軟件按需求實(shí)現(xiàn)但是功能根本不能滿足用戶需要。第二種,功能都有了,軟件沒有達(dá)到可用性、易用性。
對于第一種,當(dāng)然是因?yàn)榍捌谝?guī)劃疏漏了某些細(xì)小功能,沒能把需求文檔做完善。應(yīng)該是規(guī)劃工作做的還不夠認(rèn)真和細(xì)致。
對于第二種情況,我認(rèn)為更多是在產(chǎn)品設(shè)計(jì)規(guī)劃方面經(jīng)驗(yàn)還不夠成熟。這種問題應(yīng)該是很難避免的。因?yàn)槊糠N新產(chǎn)品對產(chǎn)品團(tuán)隊(duì)來說都很陌生。即使以前做過類似的東西,也難免面面俱到。這只能通過不斷努力和認(rèn)真的態(tài)度來彌補(bǔ)。
前期規(guī)劃的交流涉及了市場、產(chǎn)品和技術(shù)研發(fā)等多個(gè)團(tuán)隊(duì)之間。需要的不僅是團(tuán)隊(duì)內(nèi)部的交流,更多需要協(xié)調(diào)好團(tuán)隊(duì)之間的交流??赡苡袝r(shí)候需要公司高層和中層參與協(xié)調(diào)。
目前,很多開發(fā)人員深感項(xiàng)目的需求文檔寫的都很單薄。大家可以想一想,如果沒有好的開始,怎么會有好的結(jié)束呢?需求文檔單薄,不夠細(xì)致,由誰來繼續(xù)完善呢?難道讓程序員們自己去完善。我想程序員也可能沒有這種能力。對于程序員能把代碼寫的很健壯很穩(wěn)定就已經(jīng)是很不容易的事情了。
二、概要設(shè)計(jì):
我理解的概要設(shè)計(jì)步驟:(以項(xiàng)目為中心的開發(fā)流程)
1〉項(xiàng)目經(jīng)理仔細(xì)閱讀項(xiàng)目需求文檔。
2〉項(xiàng)目經(jīng)理召集項(xiàng)目開發(fā)成員,開項(xiàng)目啟動會議。具體商議項(xiàng)目的開發(fā)任務(wù)和責(zé)任分配。
3〉核心開發(fā)人員開發(fā)確定,以及各模塊開發(fā)人員確定。
4〉由系統(tǒng)分析員和核心開發(fā)人員仔細(xì)閱讀需求文檔,對系統(tǒng)整個(gè)架構(gòu)分析和做技術(shù)規(guī)劃。
5〉系統(tǒng)分析員整理和書寫最終的系統(tǒng)架構(gòu)和概要設(shè)計(jì)文檔。
6〉系統(tǒng)分析員在文檔提交日,提交給項(xiàng)目經(jīng)理。項(xiàng)目經(jīng)理確認(rèn)文檔并審批。
7〉項(xiàng)目經(jīng)理召集項(xiàng)目開發(fā)成員,開一個(gè)概要設(shè)計(jì)以及系統(tǒng)架構(gòu)確定的會議。向每個(gè)成員分發(fā)文檔,并討論確定最終概要設(shè)計(jì)文檔。
8〉開始詳細(xì)設(shè)計(jì)文檔的工作
三、詳細(xì)設(shè)計(jì):
1〉項(xiàng)目經(jīng)理組織成立各個(gè)模塊的開發(fā)小組,并確定開發(fā)小組組長(程序經(jīng)理)。
2〉各開發(fā)組長書寫各自模塊的詳細(xì)設(shè)計(jì)文檔,開發(fā)成員需要協(xié)助,配合。
3〉在指定提交日,開發(fā)組長提交文檔給系統(tǒng)分析員。由系統(tǒng)分析員審批。
4〉系統(tǒng)分析員組織召開一個(gè)詳細(xì)設(shè)計(jì)文檔確認(rèn)的會議。
5〉然后開發(fā)組長分發(fā)各自模塊的詳細(xì)設(shè)計(jì)文檔給程序員,程序員在指定時(shí)間內(nèi)完成。
6〉程序員做內(nèi)部測試。開發(fā)組長協(xié)調(diào)并配合。
7〉確認(rèn)無bug提交給開發(fā)組組長。
8〉所有模塊整合工作,由整個(gè)開發(fā)組成員參與完成。由所有開發(fā)組長和系統(tǒng)分析員負(fù)責(zé)主要部分工作。程序員協(xié)助和配合。
9〉對整合后工程做詳細(xì)測試。
10〉確認(rèn)測試通過后,開發(fā)組長根據(jù)開發(fā)成員表現(xiàn)以及提交成果填寫績效考核表。然后提交給項(xiàng)目經(jīng)理。
11〉項(xiàng)目經(jīng)理會召開項(xiàng)目總結(jié)會,同時(shí)向優(yōu)秀成員頒獎(jiǎng)。同時(shí)鼓勵(lì)所有成員繼續(xù)努力。對不能按時(shí)完成導(dǎo)致項(xiàng)目能按時(shí)提交,以及對導(dǎo)致失敗的關(guān)鍵人員給與懲罰處理。
當(dāng)然,以上只是一個(gè)簡單的開發(fā)流程,一定是有很多不足的地方。希望能起到拋磚引玉的作用。大家都明白,流程和制度是死的,但人是活的,所以如何按流程做得好,關(guān)鍵還是在人本身了。沒有一個(gè)流程和制度,一個(gè)團(tuán)隊(duì)也必將是一盤散沙。正所謂“無規(guī)矩?zé)o以成方圓”。這句話說得很有道理。
四、具體編碼:
開發(fā)幾個(gè)項(xiàng)目之后,對編寫程序有了更進(jìn)一步的了解。
好的程序應(yīng)該具有: 易讀性,易擴(kuò)展性,容錯(cuò)性。
易讀性: 所有變量和函數(shù)以及類名用簡單易懂易記憶的命名方式。所有類和函數(shù)甚至變量都有關(guān)鍵的注釋說明。這點(diǎn)很重要,也是最基礎(chǔ)的。如果代碼書寫不夠美觀和易懂,我想自己以后也不想再看。就更別談功能的擴(kuò)展和新版本開發(fā)了。
易擴(kuò)展性: 整體系統(tǒng)架構(gòu)邏輯簡單清晰。模塊與模塊之間盡量做到互不影響,也就是盡可能的獨(dú)立。這部分工作主要體現(xiàn)在前期設(shè)計(jì)工作中,需要掌握好的設(shè)計(jì)經(jīng)驗(yàn)和方法才能夠做得比較好。
容錯(cuò)性: 對數(shù)據(jù)流和指針以及數(shù)組都做數(shù)據(jù)有效性檢查;對第三方接口的調(diào)用失敗的容錯(cuò)性。對所有代碼都做調(diào)用失敗后的錯(cuò)誤處理。以及在大的工程中加入trace文件輸出,把關(guān)鍵的數(shù)據(jù)流和關(guān)鍵處理部分的操作信息輸出。以便對工程異常情況產(chǎn)生條件的定位,及時(shí)解決問題。
我覺得程序員能在這三方面做得很好就算一個(gè)優(yōu)秀的programmer了。
五、調(diào)試、跟蹤與測試:測試需要注意的:
對每個(gè)模塊的接口做測試,數(shù)據(jù)邊界的檢查。在對整個(gè)模塊做測試。
主要測試穩(wěn)定性,效率以及功能是否正常。
確認(rèn)單個(gè)模塊完全正常后,再加入工程。
在系統(tǒng)架構(gòu)設(shè)計(jì)的時(shí)候,可能會引入原型參考。要對原型做完成測試后,確認(rèn)沒有問題后,才可使用??梢圆捎肰C自帶Trace或者將信息輸出為文本文件的方式跟蹤程序并輸出關(guān)鍵信息,以便定位程序異常的原因。對于通信模塊的測試,特別注意服務(wù)端和客戶端的數(shù)據(jù)流??梢葬槍π缘膶懸粋€(gè)客戶端或服務(wù)端的測試程序,檢驗(yàn)通訊過程是否正常。在用VC做開發(fā)中,一定先要讓Debug版本正常運(yùn)行,保證沒有任何異常,內(nèi)存泄漏和Assert等調(diào)試警告信息。如果用到其他Lib,一定要保證Lib本身不存在問題。
這里只是提到一些自己容易忽略的東西,希望能對大家有所幫助,歡迎指正!謝謝。
第三篇:軟件開發(fā)心得
軟件開發(fā)心得體會
08軟件(1)班 陳會敏 24號
歲月流轉(zhuǎn),時(shí)光匆匆,轉(zhuǎn)眼間我的大學(xué)生活已經(jīng)接近了尾聲?;厥淄?,有太多美好的,也有太多艱辛。我的大學(xué)生活的主旋律還是學(xué)習(xí),我所選學(xué)的專業(yè)是軟件技術(shù),在這條道路上走了那么久,也有一些小小的感悟與體會。
還記得上初中時(shí),英語課本上有一篇關(guān)于比爾蓋茨的文章,當(dāng)時(shí)真的很佩服比爾蓋茨,也就是那時(shí)我才第一次接觸到軟件一詞,學(xué)過那篇文章后我有個(gè)想法,就是也要做個(gè)比爾蓋茨,可是由于家庭條件的限制,那也只能是個(gè)美好的夢想。后來上了高中,再報(bào)考時(shí)我就選擇了軟件技術(shù)這個(gè)專業(yè),這樣我想就向那個(gè)遙遠(yuǎn)而又美好的夢想邁進(jìn)了一點(diǎn)點(diǎn)吧。
然而當(dāng)我真正上了大學(xué),學(xué)了這個(gè)專業(yè),我才知道要做個(gè)比爾蓋茨是多么的難,要想學(xué)好我的專業(yè)要花費(fèi)很大的精力。第一學(xué)期我們開設(shè)了C語言這門課程,當(dāng)時(shí)我學(xué)著真的是云里霧里、一竅不通,很是失落,學(xué)了不久之后我開始覺得自己可能并不喜歡這個(gè)專業(yè),只是一時(shí)昏了頭,錯(cuò)以為喜歡了?,F(xiàn)實(shí)的打擊讓我有點(diǎn)不知所措,然而我已經(jīng)選擇了它,有句話說:既然選擇了遠(yuǎn)方便只顧風(fēng)雨兼程。我既然選擇了這個(gè)專業(yè),我便也只有硬著頭皮也要走下去了。有了這樣的想法之后,在之后的一段時(shí)間里,只要是沒課的時(shí)候我就抱起了C語言課本,努力的看,記語法知識,語法規(guī)則,學(xué)語句、小算法等等。經(jīng)過一段時(shí)間的研究學(xué)習(xí),我發(fā)現(xiàn)C語言并沒有我想象中的那么難
了,還是很有意思的。就這樣在學(xué)與玩中我的大學(xué)第一個(gè)星期就過完了。
后來又開設(shè)了很多課程,有VB、網(wǎng)絡(luò)、數(shù)據(jù)庫、操作系統(tǒng)、數(shù)據(jù)結(jié)構(gòu)等。在這些課程中最令我頭疼的就是數(shù)據(jù)庫了,老師講的時(shí)候老是劃重點(diǎn),講的很少,當(dāng)時(shí)學(xué)的時(shí)候真的好難受,一學(xué)期下來啥也不會,后來看書上的操作,一步一步的操作,才終于學(xué)會了建個(gè)數(shù)據(jù)庫,做下備份還原等操作。開設(shè)的那么多課程也有我很喜歡的課程,比如數(shù)據(jù)結(jié)構(gòu),這門課程理論的比較多,上機(jī)操作的很少,這門課程是很需要理解的,當(dāng)然有的還是要死記的。學(xué)習(xí)這門課的時(shí)候,我覺得并不像其它課程那么吃力,可能高中是學(xué)理科的緣故吧,理解起來并不太費(fèi)勁。所以當(dāng)時(shí)就很喜歡這門課,然而這門課表皮的好學(xué),但要深學(xué)起來還是很有難度的,所以期末考試的時(shí)候我的成績并不太理想,但這些打擊不了我對它的興趣,至少我知道我所學(xué)的這個(gè)專業(yè)還是有很多我是很喜歡的。
這樣走著走著就到了大二的下學(xué)期了,那個(gè)學(xué)期,我們有一門課是C++,這門課的老師很和藹,能力也很高,從他那里我學(xué)到了很多東西。老師教給了我們很多算法,也很系統(tǒng)的講解了語法知識,還教我們做小系統(tǒng),有的時(shí)候他會給我門們一些小系統(tǒng)的代碼,讓我們?nèi)ジ膶懀瑒傞_始的時(shí)候我也是不會,后來經(jīng)過學(xué)習(xí)請教改寫成功了,這個(gè)時(shí)候我就會很開心,很有成就感。就這樣在學(xué)與玩中,在快樂和憂愁中我們迎來了我們的大三時(shí)光。
大三剛一開學(xué),老師們就告訴我們這學(xué)期就上十二周的課,然后
就考試,就畢業(yè)了。這讓我很有緊迫感,一想到畢業(yè)在即,心頭就有種不舍,這兒有我美好的時(shí)光,然而我就要對這里說再見了。大三了我們的課全變成了專業(yè)課,也幾乎全成了上機(jī)課,老師還給我們布置了一個(gè)程序,就是一個(gè)小組要交一個(gè)系統(tǒng)來算作成績。我們這小組所選的課題是圖書管理系統(tǒng),針對這個(gè)系統(tǒng),我們上機(jī)的時(shí)候,利用網(wǎng)絡(luò)資源在網(wǎng)上查找了相關(guān)的資料,因?yàn)檎f實(shí)話,我們對此并不太理解,也只有通過網(wǎng)絡(luò)來查找信息,做好需求分析,功能模塊設(shè)計(jì)等工作。在這同時(shí)我們還去了學(xué)校的圖書館理解了相關(guān)的信息,這個(gè)系統(tǒng)并不要求功能有多么強(qiáng)大,關(guān)鍵在與一種鍛煉,思維的鍛煉,對所學(xué)東西的總結(jié)等。建立數(shù)據(jù)庫時(shí)我們就根據(jù)需要建立幾個(gè)表,里面的數(shù)據(jù)也是從我們學(xué)校圖書館里找來的。后來的界面設(shè)計(jì),為了追求美觀,我們又在網(wǎng)上搜了很多美麗的圖片來美化界面。具體到功能的時(shí)候,有很多東西都不會,后來老師在課堂在做了講解,我們就把它用到了我們的系統(tǒng)中,真的就是學(xué)一步做一步的。整個(gè)的系統(tǒng)做下來,我學(xué)到了很多東西,也對那么知識有了很好的應(yīng)用能力。
現(xiàn)在這個(gè)星期也就到了期末,這短暫的校園時(shí)光也在飛速的流逝著。回首過去學(xué)習(xí)的經(jīng)歷,真是苦中有樂,樂中亦多苦,然而無論如何這些都已經(jīng)走過去了,未來的路還要我們好好的走下去。人生本就是一個(gè)不斷的學(xué)習(xí)的過程,也是一個(gè)不斷完善的過程,在未來的道路上我會更加努力地學(xué)習(xí),走出一個(gè)美好的人生。
第四篇:大型軟件開發(fā)心得
最近做的一個(gè)項(xiàng)目從需求分析到上線綿延了四個(gè)月之久,這也是目前接手過功能點(diǎn)最繁復(fù),產(chǎn)品線對接最多的一個(gè)項(xiàng)目。從中得到的一些關(guān)于設(shè)計(jì)較大型產(chǎn)品的心得,拿出來跟大家分享。
立項(xiàng)前
1、統(tǒng)一元素設(shè)計(jì)需考慮周全
也許是初創(chuàng)團(tuán)隊(duì)的緣故,我不得不感嘆團(tuán)隊(duì)對產(chǎn)品經(jīng)理要求之嚴(yán)格之縝密,項(xiàng)目全程只有一個(gè)人負(fù)責(zé),所以大到產(chǎn)品線對接,小到一句提示的位置和展示形式都需要一一推敲。
哪些元素應(yīng)該做到統(tǒng)一?
a、提示方面:統(tǒng)一的操作成功/失敗提示;統(tǒng)一的彈窗形式;提示語言采用較統(tǒng)一的句型;為空情況的友好提醒;溢出情況的友好提醒;表單實(shí)時(shí)驗(yàn)證的提醒形式等。
b、文字方面:是否有統(tǒng)一的段落前“·”號;統(tǒng)一的鏈接狀態(tài);統(tǒng)一的字體、間距、行高等。
c、圖片方面:調(diào)取圖片的統(tǒng)一尺寸;如果是上傳圖片類的操作,需要考慮周全全站的調(diào)取情況,以及考慮是否統(tǒng)一預(yù)覽圖的尺寸等。
d、細(xì)節(jié)交互:未激活功能的按鈕做“灰色”處理(例如用戶沒有勾選信息時(shí)批量刪除按鈕不可使用);按鈕點(diǎn)擊的狀態(tài)統(tǒng)一(例如增加“提交中”的按鈕狀態(tài),以防止網(wǎng)速慢用戶狂點(diǎn)某一按鈕的情況);特殊控件的統(tǒng)一等。
也許會有朋友說,上面有些是交互設(shè)計(jì)師需要做的事,但我一直認(rèn)為作為一個(gè)產(chǎn)品經(jīng)理考慮周全一些,沒壞處。這些“統(tǒng)一”同樣可以用在驗(yàn)收階段,要知道,即使一個(gè)像素也可以改變整個(gè)產(chǎn)品的感覺。
2、原有功能的去留
我一直覺得升級已有產(chǎn)品比開發(fā)新產(chǎn)品難一些。這就像栽培植物一樣,新種下一棵果樹無非需要選對了土地,然后刨個(gè)坑種下去,然而成長期的去病枝、打頂?shù)雀鞣N修剪所消耗的精力往往更多。
改進(jìn)已有產(chǎn)品常常需要面對一個(gè)最棘手的問題:原有功能是去是留?
原功能去掉的話是不是會影響部分用戶使用?是否需要通過公告、站內(nèi)信、界面引導(dǎo)等方式友好地告知用戶?怎樣把對用戶的傷害降至最低?
原功能留下的話是不是可以優(yōu)化完善?聽到了什么用戶群怎樣的聲音?是否要在這次升級中做調(diào)整?
這些問題當(dāng)接到項(xiàng)目的時(shí)候,產(chǎn)品經(jīng)理就應(yīng)該考慮周全了。特別需要注意的是,如果這個(gè)產(chǎn)品之前不是自己設(shè)計(jì)的,那么最好找到prd說明文檔細(xì)細(xì)研究一遍,對把握不準(zhǔn)的功能點(diǎn)找到原負(fù)責(zé)人確認(rèn),畢竟樹苗是ta摘的,別把將來最能結(jié)果的枝干給砍了。
3、產(chǎn)品線上下游的對接
昨天有跟朋友聊起淘寶強(qiáng)勢之處,就是產(chǎn)品與產(chǎn)品緊密捏合,線上線下、跨平臺跨行業(yè)形成了一個(gè)盤根錯(cuò)節(jié)、根深蒂固的根基,無可撼動。
所以把握產(chǎn)品線上下游和產(chǎn)品周邊很重要,即使一個(gè)看似簡單的新聞?wù)故卷撁嫘薷囊矔砍兜骄庉嫼笈_、廣告位管理、幫助中心,甚至是訪問統(tǒng)計(jì)、數(shù)據(jù)需求的變更。
這要求在產(chǎn)品設(shè)計(jì)開始前,需要把該產(chǎn)品“連根拔起”,仔細(xì)梳理相關(guān)脈絡(luò),如果產(chǎn)品線夠長,一個(gè)清晰的產(chǎn)品線結(jié)構(gòu)圖很有必要。
項(xiàng)目中
1、項(xiàng)目期間來自相關(guān)產(chǎn)品線調(diào)整的影響
項(xiàng)目期間相關(guān)產(chǎn)品線的調(diào)整是我最不愿意遇到的情況,這就像你在通往目的地的道路上高速行駛,就快要到達(dá)終點(diǎn)了,突然一個(gè)人告訴你:你走錯(cuò)路了。
項(xiàng)目里有一個(gè)通用模塊,產(chǎn)品設(shè)計(jì)到一半,這個(gè)通用模塊改了;項(xiàng)目里有一個(gè)流程,產(chǎn)品做到一半,這個(gè)流程廢棄了;最要命的是已經(jīng)立項(xiàng)開發(fā)了,你不得不硬著頭皮跟程序員說:“因?yàn)橐恍┎豢煽咕茉颍@個(gè)需求咱不做了。”
對于一個(gè)耗時(shí)較長的項(xiàng)目來說,這種情況難以避免,事出原因私自總結(jié)有三:
a、嚴(yán)重體驗(yàn)性問題:例如某個(gè)流程遭到大量用戶的不滿,為防止用戶流失,不得不做臨時(shí)調(diào)整,而倒霉的是,你也在用這個(gè)流程。
b、相關(guān)項(xiàng)目的影響:包括并行項(xiàng)目和新項(xiàng)目。例如你的同事在設(shè)計(jì)另一個(gè)產(chǎn)品,你們的產(chǎn)品相互牽扯較多,所以需求分析時(shí)做過很多溝通,但有一天,同事告訴你,ta的一個(gè)需求做臨時(shí)調(diào)整了會影響到你,怎么辦?
c、老板的突然決定:不舉例。
最終的解決方法不外乎三種:立即調(diào)整、延期調(diào)整、不調(diào)整。個(gè)人的處理原則一般是對a種情況進(jìn)行立即調(diào)整,對b、c情況討論并選擇性延期。
為什么這么做呢?a情況是必須要改的,時(shí)間早晚問題,長痛不如短痛,b、c兩種情況必須坐下來細(xì)細(xì)討論。需了解這個(gè)需求為什么要改?是長期對策還是臨時(shí)決定?能否延期,記錄需求等下一版本再開發(fā)?如果b、c情況提出來的需求沒過兩天又有改變,那與你配合的前端和程序員也太沒有安全感了。
這個(gè)時(shí)代能耐心閱讀完XX枚漢字的人越來越少,較大型項(xiàng)目的產(chǎn)品工作心得[下]未完待續(xù),歡迎交流……
2、需求變更
承上,需求變更是每個(gè)程序員、產(chǎn)品經(jīng)理、設(shè)計(jì)師等都會遇到的情況。產(chǎn)品經(jīng)理不是神,項(xiàng)目組也不可能是開了無敵狀態(tài)抵擋任何外界的影響。
當(dāng)遇到不得不變更需求的時(shí)候,產(chǎn)品經(jīng)理應(yīng)該怎樣處理呢?下面是個(gè)人的四條建議:
a、積極處理。往往,當(dāng)一個(gè)設(shè)計(jì)愈是趨于完成,人們愈是傾向于局部調(diào)整,而不是做重新設(shè)計(jì)。當(dāng)一個(gè)需求因?yàn)楸娝苤脑虿坏貌徽{(diào)整的時(shí)候,作為產(chǎn)品經(jīng)理需要做的第一件事便是積極面對問題,積極處理。
項(xiàng)目開發(fā)往往是一個(gè)緊張的過程,每半天甚至每幾個(gè)小時(shí)就有若干個(gè)功能點(diǎn)開發(fā)完成,當(dāng)一個(gè)需求變更傳達(dá)出現(xiàn)“延遲”,這個(gè)變更對項(xiàng)目的正常進(jìn)程的“破壞力”就會更大一些。
b、保持溝通?!罢f話容易,溝通很難。很多事除非對方自己想明白,勸是沒有用的。所以,很多時(shí)候,溝通是個(gè)自己掙扎的過程”這話沒錯(cuò)。需求變更直接會影響到下一道工序,產(chǎn)品經(jīng)理需要將需求變更的細(xì)節(jié)和原因傳達(dá)給相關(guān)人員,包括視覺、前端、程序、測試等。
這是很多產(chǎn)品經(jīng)理表示非常痛苦的過程,因?yàn)榭赡軙獾綌?shù)落和冷眼,日本有一個(gè)禮儀原則是“不要給別人添麻煩”,但是在項(xiàng)目中,這不可避免。
個(gè)人認(rèn)為所有溝通的障礙都源于思想的不統(tǒng)一,如果讓大家覺得這個(gè)需求修改是在浪費(fèi)時(shí)間,那么溝通上的不暢快在所難免。項(xiàng)目不是這樣算的,需求既然更改一定有所目的,產(chǎn)品經(jīng)理需要將這個(gè)原因講明白,不做修改或節(jié)約溝通時(shí)間導(dǎo)致的返工,后果往往更嚴(yán)重。
第五篇:軟件開發(fā)核心心得
軟件開發(fā)核心心得
在一個(gè)有效的組織中,必定擁有杰出的一線人才。軟件設(shè)計(jì)也是一樣的,一線人才的素質(zhì)決定了軟件的質(zhì)量。從敏捷的觀點(diǎn)來看,代碼是檢驗(yàn)軟件過程是否有效的最終標(biāo)準(zhǔn)。目前為止,以及在短時(shí)間的未來,我們都不太可能完全脫離代碼進(jìn)行軟件設(shè)計(jì)。所以,軟件過程中的任何一個(gè)活動都是為了能夠產(chǎn)出優(yōu)秀的代碼。所以,代碼才是核心。
1.代碼是軟件開發(fā)的基礎(chǔ)
編碼是軟件開發(fā)過程中最基本、最底層的技藝,然而也是最重要的技藝。任何一個(gè)領(lǐng)域的專家都需要花費(fèi)大量的時(shí)間來進(jìn)行基本技藝的鍛煉,木匠需要花費(fèi)大量的時(shí)間來鍛煉他們對各種工具的掌握,廚師則需要練習(xí)刀工和火候。程序員也是一樣的,對我們來說,語言的各種特性必須要了然于胸。而對軟件的管理也需要從代碼做起。
從2000年到現(xiàn)在,國內(nèi)興起了一股軟件工程熱,需求管理、配置管理、甚至CMM。面對紛至沓來的各種方法學(xué)、UML、OOA,大家似乎已經(jīng)熱衷于這些概念本身了,卻往往忽略了軟件開發(fā)中最基本的元素:代碼。在和很多軟件組織的接觸過程中,我們認(rèn)為大多數(shù)組織急切需要的并不是這些工程理論,不是說這些理論不重要,而是這些組織的癥結(jié)不在于此。很多的組織連代碼的質(zhì)量都管理不好,又何談其它呢?代碼管理是基礎(chǔ)的基礎(chǔ),從管理的角度上來看,任何一個(gè)組織的管理都需要一個(gè)從上至下的管理過程,有基層的管理人員,也有高層的管理人員。對代碼的管理就是軟件開發(fā)中的基層管理,它起到的作用就是能夠把需求、設(shè)計(jì)的思路貫徹到最終的代碼中。
“管理無大事”。對軟件的管理也是一樣,大部分的問題都是由于很小的原因引起的。例如,一個(gè)產(chǎn)品如果后期在debug上花費(fèi)了大量的時(shí)間,那么,這種現(xiàn)象是由于什么原因引起的?一種可能的原因是前期的代碼設(shè)計(jì)中對代碼質(zhì)量的把握不嚴(yán)。每一次代碼功能的演化并不會產(chǎn)生太多的問題,但是當(dāng)代碼累積越來越多的時(shí)候,問題也就慢慢出現(xiàn)了。那么如何解決呢?可以加強(qiáng)QA的力量,也可以引入復(fù)審,還可以引入單元測試??傊?,要有一種方法對代碼進(jìn)行控制。
軟件的開發(fā)過程就象是一部精密的機(jī)器,任何一個(gè)環(huán)節(jié)的變化,都會對其它的環(huán)節(jié)產(chǎn)生影響。把軟件過程按照瀑布的形式進(jìn)行劃分是一種分解的處理思路,但同時(shí)我們還應(yīng)該看到不同活動之間的相互影響。軟件開發(fā)中的生命周期模型也是一個(gè)層次模型,從業(yè)務(wù)建模一直到軟件實(shí)現(xiàn),需要跨越數(shù)個(gè)層次,同樣會出現(xiàn)執(zhí)行不力的情況,例如,代碼設(shè)計(jì)偏離需求、偏離設(shè)計(jì)的情況比比皆是。
如何避免這種情況呢?這就需要我們從源代碼的角度,反思其上游的實(shí)踐活動,是否足
以約束代碼設(shè)計(jì)?就拿XP來說,他解決這個(gè)問題的方式是盡快的進(jìn)入代碼開發(fā)階段,從代碼開發(fā)中發(fā)現(xiàn)問題,并在下一輪的開發(fā)中解決。這種思路是正確的,但XP畢竟是方法論,他不會告訴你過于細(xì)節(jié)的東西,盡管XP已經(jīng)提供了大量面向代碼的實(shí)踐。因?yàn)榉椒ㄕ摰某橄蠹墑e比較高,使得他必須舍棄部分的細(xì)節(jié)。而這篇文章告訴你的,就是這些細(xì)節(jié)。就像我們在下一節(jié)中討論的例子,需要在代碼中加入對異常的處理,那么,異常的源頭在哪里呢?是需求,在需求中,我們發(fā)現(xiàn)了一些業(yè)務(wù)的非正常的處理序列,發(fā)現(xiàn)了一些業(yè)務(wù)實(shí)體的限制性的要求,所以在代碼實(shí)現(xiàn)中,就需要有相應(yīng)的異常處理。在例如,一個(gè)優(yōu)秀的異常處理,還需要讓客戶端程序員了解可能發(fā)生的異常,以保證不同代碼間正確的集成。
2.面向?qū)ο蟮拇a
面向?qū)ο蟮拇a已經(jīng)在現(xiàn)在的軟件開發(fā)中占據(jù)了主流的位置,面向?qū)ο蟮乃悸芬灿衅鋬?yōu)勢所在,就像后文所討論的,面向?qū)ο蟠a有著非面向?qū)ο蟠a的很多優(yōu)勢,而軟件業(yè)中很多新的思潮的產(chǎn)生,也都是基于面向?qū)ο笳Z言的,所以我們關(guān)注的代碼將是面向?qū)ο蟠a。
面向?qū)ο蟮乃枷雭碜杂诔橄髷?shù)據(jù)類型。對于面向?qū)ο髞碚f,它最重要的改進(jìn)就是把世間萬物都描述為對象,而類則描述了同一種對象的特征,而不是像傳統(tǒng)的開發(fā)方法那樣,按照機(jī)器指令的執(zhí)行順序來進(jìn)行設(shè)計(jì)。當(dāng)然,面向?qū)ο蟠a最終仍然是要按照時(shí)序來執(zhí)行的,但是從程序員的角度看來,面向?qū)ο蟠a更側(cè)重于對象之間的交互,多個(gè)對象各司其職,相互協(xié)作以完成目標(biāo)。而面向?qū)ο蠹夹g(shù)的發(fā)展,也是朝著更加貼近我們世界觀的方向發(fā)展。從這點(diǎn)來看,有人說完全沒有程序設(shè)計(jì)經(jīng)驗(yàn)的人學(xué)習(xí)面向?qū)ο罂赡軙拥娜菀?,因?yàn)樗恍枰獜脑鹊臅r(shí)序程序的桎梏中擺脫出來,但這未必是事實(shí)。面向?qū)ο鬀Q不是一種簡單的程序設(shè)計(jì)思路。這是我們的觀點(diǎn),也會在下文中反復(fù)的論證。
和所有的職業(yè)一樣,程序員,或者是面向?qū)ο蟪绦騿T,始終堅(jiān)持的一點(diǎn)就是嚴(yán)謹(jǐn)。你會看到各種各樣優(yōu)秀的代碼,但那決不是一次能夠?qū)懗傻?,要不斷的嘗試,不斷的改進(jìn)。為什么重構(gòu)和測試優(yōu)先是敏捷方法中很重要的一項(xiàng)實(shí)踐?因?yàn)槌绦騿T不是神,他們需要慢慢改進(jìn)他們的代碼。雖然羅馬不是一天能夠建成的,但是在編寫面向?qū)ο蟠a的過程中,有一些實(shí)踐是需要堅(jiān)持的,它體現(xiàn)了我們所說的嚴(yán)謹(jǐn)。
3.編寫并管理面向?qū)ο蟮拇a
編寫優(yōu)秀的面向?qū)ο蟠a并不是一件容易的事情,優(yōu)秀的OO代碼如行云流水,糟糕的OO代碼讓人覺得渾身起雞皮疙瘩。編寫優(yōu)秀的OO代碼要求程序員有一定的自我修養(yǎng),能夠以抽象的思路看待問題,找到問題的核心并對問題域進(jìn)行分解。它強(qiáng)調(diào)的是一種解題的思路,但這個(gè)解不是唯一的。
典型的例子是設(shè)計(jì)模式,設(shè)計(jì)模式確實(shí)給了我們以很大的啟發(fā),通過它,我們能夠了解到優(yōu)秀的代碼是如何用于解決實(shí)際問題的。但是是不是你必須在軟件中照搬設(shè)計(jì)模式呢?如果你這么做,那么你對設(shè)計(jì)模式的理解仍然不夠。我曾和在建筑行業(yè)的朋友聊起Christopher Alexander的建筑的永恒之道。他很興奮的告訴我,那確實(shí)是一本很好的書,能夠引發(fā)人很深的思考,但是現(xiàn)在也有另外的一種觀點(diǎn),認(rèn)為美仍然是無形的,應(yīng)該發(fā)自建筑師的內(nèi)心。對這句話我思考了很久,其實(shí)建筑是給人使用的,因此最重要的是它能都給人帶來的價(jià)值,隱含在其中的那種活生生的氣質(zhì),這是建筑師文化底蘊(yùn)的外在表露。所以,Christopher Alexander在那本書中的目的,也是為了找到一種總結(jié)自己觀點(diǎn)的方法,來總結(jié)自己對人文的認(rèn)識。至于現(xiàn)在大家對他的思路提出了質(zhì)疑,那也是一件好事,這說明大家對建筑之道的認(rèn)識到了新的高度。建筑是這樣,軟件中的模式也是一樣的,我也曾熱衷于研究模式的使用,直到某一天我猛然驚醒,與其沉迷于模式的表面形式,為什么不去研究隱藏在它背后的文化底蘊(yùn)呢?武俠小說中常說無招勝有招,模式的應(yīng)用也應(yīng)當(dāng)?shù)竭_(dá)這個(gè)境界,你如果可以在不經(jīng)意間應(yīng)用模式的思想,那又何必拘泥于模式的形式呢?
編寫優(yōu)秀OO代碼雖難,但還有更難的事情,就是讓整個(gè)開發(fā)團(tuán)隊(duì)都產(chǎn)出優(yōu)秀的OO代碼。我們剛才說了,OO對問題的解不是唯一的,但各個(gè)不同的優(yōu)秀解匯集到一起,可能就是一個(gè)糟糕的解,這是風(fēng)格和架構(gòu)的問題。你如何在團(tuán)隊(duì)中制定制度,營造氛圍,讓優(yōu)秀OO代碼成為團(tuán)隊(duì)最終的成果?這些問題,在我看來,要比CMM難得多,這個(gè)問題并不是靠花錢就能夠解決的。如果能夠解決這個(gè)問題,這個(gè)團(tuán)隊(duì)的創(chuàng)造力一定是驚人的。
4.面向?qū)ο筌浖_發(fā)過程
普通的軟件開發(fā)過程和面向?qū)ο箝_發(fā)過程有著很大的不同。回想我們在非面向?qū)ο笾虚_發(fā)過程中,最經(jīng)常采用的任務(wù)分配方法就是以軟件模塊為單位,這樣的好處是分配簡單,不同任務(wù)之間耦合程度低,容易操作。壞處是幾乎無法做到重用,也缺乏整體性的設(shè)計(jì)。而面向?qū)ο筌浖_發(fā)則不同,它是以類、類集合作為基本單位的。類之間關(guān)系錯(cuò)綜復(fù)雜(雖然我們提倡低耦合的設(shè)計(jì),但類之間的關(guān)系仍然是相對復(fù)雜的)。這種情況下程序員之間相互協(xié)作的要求就非常之高,這種關(guān)系如果處理恰當(dāng),則能夠完全體現(xiàn)出面向?qū)ο蟮耐?,否則,那將會是一場大災(zāi)難,面向?qū)ο蟮能浖_發(fā)過程要養(yǎng)成一些好的習(xí)慣:
4.1 盡量簡化和穩(wěn)定客戶端。
個(gè)人編程可以是一種享受,但團(tuán)隊(duì)開發(fā)始終是一項(xiàng)嚴(yán)謹(jǐn)?shù)穆殬I(yè)活動,因此多考慮別人,不要設(shè)計(jì)復(fù)雜的接口,雖然你省事了,但這會給理解和使用你的接口和人造成障礙。
4.2 準(zhǔn)備一份簡潔的文檔,并保持更新。
隨便一種形式的穩(wěn)定,可以是代碼,可以是UML圖,也可以是純粹的文字(估計(jì)沒幾個(gè)程序員喜歡這種形式)。只要它能夠傳達(dá)你的代碼的目的,那就足夠。記住,更新代碼后,同時(shí)更新你的文檔。過期的文檔不僅是廢紙這么簡單,它會給其它人造成麻煩。切記!
4.3 盡可能多的考慮異常和錯(cuò)誤的情況。
寫出一個(gè)功能并沒有什么,但是要把這個(gè)功能寫的非常的完善那就很難了,因?yàn)槟阈枰紤]各種各樣的情況,正常的、非正常的。所以,寫完一個(gè)類的定義應(yīng)該是,完成編碼和穩(wěn)定,并通過原定的測試。本文摘自惠集網(wǎng)