先思再行 閉著眼睛編程
先思再行 閉著眼睛編程 軟件質(zhì)量編程研發(fā)實踐 摘要:解決問題最重要的習(xí)慣不是一直盯著屏幕和編寫修改代碼,某些時候,阻止你成功的東西恰恰會是過于努力。這時候你需要暫停一下,平緩你的思緒,換一種方法或許能帶給你不一樣的效果。
你會花多少時間思考如何編寫代碼?
乍看這是一個引人思考的深層次問題,在編程專業(yè)中常有這樣的誤解,軟件開發(fā)就是寫代碼。軟件開發(fā)實為一門藝術(shù),而代碼僅僅是通往藝術(shù)之門的工具。好比燃料和畫布是畫家的工具一樣,代碼的目的是實現(xiàn)某種策略和思路。對程序員來說,他的目標(biāo)是開發(fā)出完整的軟件系統(tǒng),按照需求完成各個功能模塊或許是某種無形的思路、特性。比如一個深思熟慮的架構(gòu)、明確的內(nèi)部組織和代碼質(zhì)量,最后將這些進(jìn)行整合。畫家每隔一小段時間會停下來重新評估進(jìn)展和繪畫,看看是否達(dá)到自己的要求,程序員也一樣,必須定期審查代碼、查看進(jìn)展、檢查思路是否實現(xiàn)。
那么你平時是如何工作的呢?是否確定工作區(qū)后就埋頭苦干?什么都無法阻止你的前進(jìn)呢?如果這個描述很適合你,那么你做的一切都有可能是錯的。
所有好的軟件都有共同之處——他們都設(shè)計精良。同樣,大多數(shù)失敗的案例也會有相同之處——缺乏結(jié)構(gòu)和視覺上的盛宴,最終導(dǎo)致崩潰。軟件開發(fā)是一項智力活動,這一切都?xì)w結(jié)于實現(xiàn)的結(jié)構(gòu)和在混亂中找到開發(fā)軟件的最佳理念。
我做過一個非常有趣的觀察。在我第一年的編程生涯中,我設(shè)法在規(guī)定的時間里開發(fā)出大量的代碼。結(jié)果大多數(shù)代碼都需要重新開發(fā)、設(shè)計甚至是丟棄。速度提高了,而效率卻明顯下降了,欲速則不達(dá)。隨著的時間推移,我學(xué)會一小步一小步前進(jìn),在開發(fā)前進(jìn)行仔細(xì)分析思考,然后再開始開發(fā)編碼。結(jié)果發(fā)現(xiàn)代碼生成速度下降了好幾倍,而成功率幾乎達(dá)到100%,是不是有點戲劇性。我越來越多采用這種策略進(jìn)行編程,我沒有堅持把時間直接轉(zhuǎn)換成代碼量。事實上,我經(jīng)常每天只寫幾行代碼甚至有些時候會再刪除幾行。反而讓我的代碼從整體上更加簡潔、效率更高。
許多程序員都體驗過這種黑暗感覺,當(dāng)你看到許多大大小小的缺陷都摻雜在一起的那種混亂,當(dāng)走到這一步再回頭重新修改設(shè)計代碼,你會意識到為時已晚并且是毫無意義的,因為你繼續(xù)下去的工作本質(zhì)上已經(jīng)是被丟棄的。
對此,你還能做什么?
事實上,你可以!學(xué)會把更多的時間用來思考并且減少代碼輸入。我發(fā)現(xiàn)長時間的盯著屏幕并不會幫助你找到解決問題的方式。當(dāng)思緒被卡住的時候,我會放棄繼續(xù)工作,離開電腦和所思考的問題。當(dāng)我漫步在公園和一些安靜的場所時,常常會想到一些非常棒的思路和理念。實際上你可以試著閉著眼睛編程,燈光和周圍的一切都不會影響到你,片刻的休息會給你帶來轟動的、突破性的思路。 我最喜歡的地方是浴室,它可以讓人放松和平靜下來,聽到照亮內(nèi)心的那些非常安靜的想法和靈感。
解決問題最重要的習(xí)慣不是一直盯著屏幕和編寫修改代碼,某些時候,阻止你成功的東西恰恰會是過于努力。這時候你需要暫停一下,平緩你的思緒,換一種方法或許能帶給你不一樣的效果。





