如何提高自己的編程水平
不知不覺(jué)做軟件已經(jīng)做了十年,有成功的喜悅,也有失敗的痛苦,但總不敢稱(chēng)自己是高手,因為和我目中真正的高手們比起來(lái),還差的太遠。世界上并沒(méi)有成為高手的捷徑,但一些基本原則是可以遵循的。
1. 扎實(shí)的基礎。數據結構、離散數學(xué)、編譯原理,這些是所有計算機科學(xué)的基礎,如果不掌握他們,很難寫(xiě)出高水平的程序。據我的觀(guān)察,學(xué)計算機專(zhuān)業(yè)的人比學(xué)其他專(zhuān)業(yè)的人更能寫(xiě)出高質(zhì)量的軟件。程序人人都會(huì )寫(xiě),但當你發(fā)現寫(xiě)到一定程度很難再提高的時(shí) 候,就應該想想是不是要回過(guò)頭來(lái)學(xué)學(xué)這些最基本的理論。不要一開(kāi)始就去學(xué)OOP,即使你再精通OOP,遇到一些基本算法的時(shí)候可能也會(huì )束手無(wú)策。
2. 豐富的想象力。不要拘泥于固定的思維方式,遇到問(wèn)題的時(shí)候要多想幾種解決問(wèn)題的方案,試試別人從沒(méi)想過(guò)的方法。豐富的想象力是建立在豐富的知識的基礎上,除計算機以外,多涉獵其他的學(xué)科,比如天文、物理、數學(xué)等等。另外,多看科幻電影也是一 個(gè)很好的途徑。
3. 最簡(jiǎn)單的是最好的。這也許是所有科學(xué)都遵循的一條準則,如此復雜的質(zhì)能互換原理在愛(ài)因斯坦眼里不過(guò)是一個(gè)簡(jiǎn)單得不能再簡(jiǎn)單的公式:E=mc2。簡(jiǎn)單的方法更容易被人理解,更容易實(shí)現,也更容易維護。遇到問(wèn)題時(shí)要優(yōu)先考慮最簡(jiǎn)單的方案,只有簡(jiǎn)單方案
不能滿(mǎn)足要求時(shí)再考慮復雜的方案。
4. 不鉆牛角尖。當你遇到障礙的時(shí)候,不妨暫時(shí)遠離電腦,看看窗外的風(fēng)景,聽(tīng)聽(tīng)輕音 樂(lè ),和朋友聊聊天。當我遇到難題的時(shí)候會(huì )去玩游戲,而且是那種極暴力的打斗類(lèi)游戲,當負責游戲的那部分大腦細胞極度亢奮的時(shí)候,負責編程的那部分大腦細胞就得到了充分的休息。當重新開(kāi)始工作的時(shí)候,我會(huì )發(fā)現那些難題現在竟然可以迎刃而解。
5. 對答案的渴求。人類(lèi)自然科學(xué)的發(fā)展史就是一個(gè)渴求得到答案的過(guò)程,即使只能知道 答案的一小部分也值得我們去付出。只要你堅定信念,一定要找到問(wèn)題的答案,你才會(huì )付出精力去探索,即使最后沒(méi)有得到答案,在過(guò)程中你也會(huì )學(xué)到很多東西。
6. 多與別人交流。三人行必有我師,也許在一次和別人不經(jīng)意的談話(huà)中,就可以迸出靈感的火花。多上上網(wǎng),看看別人對同一問(wèn)題的看法,會(huì )給你很大的啟發(fā)。
7. 良好的編程風(fēng)格。注意養成良好的習慣,代碼的縮進(jìn)編排,變量的命名規則要始終保持一致。大家都知道如何排除代碼中錯誤,卻往往忽視了對注釋的排錯。注釋是程序的一個(gè)重要組成部分,它可以使你的代碼更容易理解,而如果代碼已經(jīng)清楚地表達了你的思想,就不必再加注釋了,如果注釋和代碼不一致,那就更加糟糕。
8. 韌性和毅力。這也許是“高手”和一般程序員最大的區別。A good programming is 99 sweat and 1 coffee。高手們并不是天才,他們是在無(wú)數個(gè)日日夜夜中磨練出來(lái)的。成功能給我們帶來(lái)無(wú)比的喜悅,但過(guò)程卻是無(wú)比的枯燥乏味。你不妨做個(gè)測試,找個(gè)10000以?xún)鹊乃財当?把它們全都抄下來(lái),然后再檢查三遍,如果能夠不間斷地完成這一工作,你就可以滿(mǎn)足這一條。
這些是我這幾年工作生涯的一點(diǎn)體會(huì ),希望能夠給大家有所幫助。
評論