世界上并沒有成為高手的捷徑,但一些基本原則是可以遵循的。
1、扎實(shí)的基礎(chǔ)
數(shù)據(jù)結(jié)構(gòu)、離散數(shù)學(xué)、編譯原理,這些是所有計(jì)算機(jī)科學(xué)的基礎(chǔ),如果不掌握它們,很難寫出高水平的程序。程序人人都會(huì)寫,但當(dāng)你發(fā)現(xiàn)寫到一定程度很難再提高的時(shí)候,就應(yīng)該想想是不是要回過頭來學(xué)學(xué)這些最基本的理論。不要一開始就去學(xué)OOP,即使你再精通OOP,遇到一些基本算法的時(shí)候可能也會(huì)束手無策。因此多讀一些計(jì)算機(jī)基礎(chǔ)理論方面的書籍是非常有必要的。
2、豐富的想像力
不要拘泥于固定的思維方式,遇到問題的時(shí)候要多想幾種解決問題的方案,試試別人從沒想過的方法。豐富的想像力是建立在豐富的知識(shí)的基礎(chǔ)上,除計(jì)算機(jī)以外,多涉獵其他的學(xué)科,比如天文、物理、數(shù)學(xué)等等。開闊的思維對(duì)程序員來說很重要。
3、最簡單的是最好的
這也許是所有科學(xué)都遵循的一條準(zhǔn)則,復(fù)雜的質(zhì)能轉(zhuǎn)換原理在愛因斯坦眼里不過是一個(gè)簡單得不能再簡單的公式:E=mc2。簡單的方法更容易被人理解,更容易實(shí)現(xiàn),也更容易維護(hù)。遇到問題時(shí)要優(yōu)先考慮最簡單的方案,只有簡單方案不能滿足要求時(shí)再考慮復(fù)雜的方案。
4、不鉆牛角尖
當(dāng)你遇到障礙的時(shí)候,不妨?xí)簳r(shí)遠(yuǎn)離電腦,看看窗外的風(fēng)景,聽聽輕音樂,和朋友聊聊天。當(dāng)我遇到難題的時(shí)候會(huì)去玩游戲,當(dāng)負(fù)責(zé)游戲的那部分大腦細(xì)胞極度亢奮的時(shí)候,負(fù)責(zé)編程的那部分大腦細(xì)胞就得到了充分的休息。當(dāng)重新開始工作的時(shí)候,我會(huì)發(fā)現(xiàn)那些難題現(xiàn)在竟然可以迎刃而解。
5、對(duì)答案的渴求
人類自然科學(xué)的發(fā)展史就是一個(gè)渴求得到答案的過程,即使只能知道答案的一小部分也值得我們?nèi)ジ冻觥V灰銏?jiān)定信念,一定要找到問題的答案,你才會(huì)付出精力去探索,即使最后沒有得到答案,在過程中你也會(huì)學(xué)到很多東西。
6、多與別人交流
三人行必有我?guī),也許在一次和別人不經(jīng)意的談話中,就可以迸出靈感的火花。多上上網(wǎng),看看別人對(duì)同一問題的看法,會(huì)給你很大的啟發(fā)。
7、良好的編程風(fēng)格
注意養(yǎng)成良好的習(xí)慣,代碼的縮進(jìn)編排,變量的命名規(guī)則要始終保持一致。大家都知道如何排除代碼中錯(cuò)誤,卻往往忽視了對(duì)注釋的排錯(cuò)。注釋是程序的一個(gè)重要組成部分,它可以使你的代碼更容易理解,而如果代碼已經(jīng)清楚地表達(dá)了你的思想,就不必再加注釋了,如果注釋和代碼不一致,那就更加糟糕。
8、韌性和毅力
這也許是“高手”和一般程序員最大的區(qū)別。高手們并不是天才,他們是在無數(shù)個(gè)日日夜夜中磨煉出來的。成功能給我們帶來無比的喜悅,但過程卻是無比的枯燥乏味。你不妨做個(gè)測(cè)試,找個(gè)10000以內(nèi)的素?cái)?shù)表,把它們?nèi)汲聛,然后再檢查三遍,如果能夠不間斷地完成這一工作,你就可以滿足這一條