在這個行業(yè)里做了快4年了,多少總結(jié)了一些東西,成功也許很難復(fù)制,但是失敗卻時常被人們重復(fù),我不敢說我做的很好,但是我希望總結(jié)出以前失敗的一些教訓(xùn),時不時看看,提醒自己以后再也不要犯類似的錯誤.這篇文章會不定期的更新,可能就是簡短的幾句話,但是,也是我實(shí)踐和思考的結(jié)果.
1)程序不會出錯,出錯的肯定是人;如果程序出錯了,那也一定是人的錯誤.
我時常在編碼調(diào)試的時候出現(xiàn)這樣的一種心理:出現(xiàn)問題的時候總是認(rèn)為不是自己的錯誤,而認(rèn)為可能是系統(tǒng)的錯誤.其實(shí),久經(jīng)考驗(yàn)的系統(tǒng)出錯的概率幾乎很小,大多數(shù)的情況下出錯的肯定是編寫代碼的人,所以你的程序出錯了一定是自己的問題,有了這個觀念會十分有助于早點(diǎn)發(fā)現(xiàn)并且改正BUG.
2)程序就是用規(guī)則處理數(shù)據(jù),規(guī)則包括:算法,數(shù)據(jù)結(jié)構(gòu),系統(tǒng)API,協(xié)議,語言,設(shè)計(jì)模式等等.
這句話很淺白,我想很多人一看就能明白,其實(shí)學(xué)習(xí)編程的過程就是在學(xué)習(xí)怎么去用規(guī)則去處理數(shù)據(jù),想想看一路過來學(xué)過的課程都是如此:算法數(shù)據(jù)結(jié)構(gòu)教會我們在什么情況下應(yīng)該選取怎樣的方式去處理數(shù)據(jù),操作系統(tǒng)教會我們系統(tǒng)如何處理數(shù)據(jù),編譯原理教會我們編譯器如何處理數(shù)據(jù),網(wǎng)絡(luò)協(xié)議,語言,正則表達(dá)式等等的更不必說了.至今我已經(jīng)很少去關(guān)注什么語言之爭的無聊話題,因?yàn)槲蚁嘈耪Z言也是一種處理數(shù)據(jù)的工具,沒有哪種工具是萬能的,只有合適的場合采用合適的工具.同時,以后再學(xué)習(xí)一種新的"規(guī)則"時,也需要抓住這些重點(diǎn):這個規(guī)則適用的場合,適用的數(shù)據(jù),處理數(shù)據(jù)的方式.
3)Make it work, make it right, make it effective.
我已經(jīng)忘記了在哪里看見的這句話(請知情者轉(zhuǎn)達(dá)一聲,謝謝:).中文的意思也很淺白:先讓它可以運(yùn)行,然后讓它可以正確的運(yùn)行,最后再去提高效率.我想,這應(yīng)該是編寫大部分代碼的順序,這也是把一個問題從簡單慢慢的一步一步進(jìn)行到復(fù)雜的過程.在你的代碼沒有正確的運(yùn)行起來之前,暫時別做優(yōu)化(當(dāng)然了很顯然的優(yōu)化是可以的),只有當(dāng)程序正確的運(yùn)行起來時,你通過測試或者工具發(fā)現(xiàn)了瓶頸所在再去考慮優(yōu)化.
4)越早讓你的程序投入調(diào)試越好.
一般而言,寫好一段代碼比調(diào)試一段代碼的時間要少的多,而許多許多的問題也是在你寫代碼的時候所不能發(fā)現(xiàn)的.