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