實(shí)干型編程經(jīng)驗(yàn)大分享
智者的夢(mèng)再美,也不如愚人實(shí)干的步伐!
講一千遍理論,不如寫(xiě)一行代碼!
任何語(yǔ)言不落實(shí)到實(shí)際行動(dòng)上都等于白說(shuō),
沒(méi)讀過(guò)MSDN例子代碼的程序員實(shí)在讓人感到可怕!
用C語(yǔ)言1000行源碼能完成的工作千萬(wàn)不要用C++重寫(xiě),
整天把高級(jí)技術(shù)放在嘴邊那是一種浮夸!
少年啊,千萬(wàn)要重視單步調(diào)試和設(shè)置斷點(diǎn),
用VC調(diào)試時(shí)記得按下Alt+5、Alt+6、Alt+7和Alt+8。
對(duì)學(xué)習(xí)編程者的忠告:
眼過(guò)千遍不如手過(guò)一遍!
書(shū)看千行不如手敲一行!
手敲千行不如單步一行!
單步源代碼千行不如單步對(duì)應(yīng)匯編一行!
VC調(diào)試時(shí)按Alt+8、Alt+7、Alt+6和Alt+5,打開(kāi)匯編窗口、堆棧窗口、內(nèi)存窗口和寄存器窗口看每句C對(duì)應(yīng)的匯編、單步執(zhí)行并觀察相應(yīng)堆棧、內(nèi)存和
寄存器變化,這樣過(guò)一遍不就啥都明白了嗎。
對(duì)VC來(lái)說(shuō),所謂‘調(diào)試時(shí)’就是編譯連接通過(guò)以后,按F10或F11鍵單步執(zhí)行一步以后的時(shí)候,或者在某行按F9設(shè)了斷點(diǎn)后按F5執(zhí)行停在該斷點(diǎn)處的時(shí)
候。
不要迷信書(shū)、考題、老師、回帖;
要迷信CPU、編譯器、調(diào)試器、運(yùn)行結(jié)果。
并請(qǐng)結(jié)合“盲人摸太陽(yáng)”和“駕船出海時(shí)一定只帶一個(gè)指南針。”加以理解。
任何理論、權(quán)威、傳說(shuō)、真理、標(biāo)準(zhǔn)、解釋、想象、知識(shí)……都比不上擺在眼前的事實(shí)!
有人說(shuō)一套做一套,你相信他說(shuō)的還是相信他做的?
其實(shí)嚴(yán)格來(lái)說(shuō)這個(gè)世界上古往今來(lái)所有人都是說(shuō)一套做一套,不是嗎?
不要寫(xiě)連自己也預(yù)測(cè)不了結(jié)果的代碼!
電腦內(nèi)存或文件內(nèi)容只是一個(gè)一維二進(jìn)制字節(jié)數(shù)組及其對(duì)應(yīng)的二進(jìn)制地址;
人腦才將電腦內(nèi)存或文件內(nèi)容中的這個(gè)一維二進(jìn)制字節(jié)數(shù)組及其對(duì)應(yīng)的二進(jìn)制地址的某些部分看成是整數(shù)、有符號(hào)數(shù)/無(wú)符號(hào)數(shù)、浮點(diǎn)數(shù)、復(fù)數(shù)、英文
字母、阿拉伯?dāng)?shù)字、中文/韓文/法文……字符/字符串、匯編指令、函數(shù)、函數(shù)參數(shù)、堆、棧、數(shù)組、指針、數(shù)組指針、指針數(shù)組、數(shù)組的數(shù)組、指針
的指針、二維數(shù)組、字符點(diǎn)陣、字符筆畫(huà)的坐標(biāo)、黑白二值圖片、灰度圖片、彩色圖片、錄音、視頻、指紋信息、身份證信息……
進(jìn)程都退出了,輸入緩沖區(qū)刷不刷新都無(wú)關(guān)痛癢。
不要企圖優(yōu)雅的結(jié)束(因?yàn)檫@是不可能辦到的)
而要在爛的不能再爛的攤子上也能重整河山!
這個(gè)世界上最大的差別和最遠(yuǎn)的距離都存在于“說(shuō)”和“做”之間。
常立志不如立長(zhǎng)志,立長(zhǎng)志不如立即干!
崩潰的時(shí)候在彈出的對(duì)話框按相應(yīng)按鈕進(jìn)入調(diào)試,按Alt+7鍵查看Call?Stack里面從上到下列出的對(duì)應(yīng)從里層到外層的函數(shù)調(diào)用歷史。雙擊某一行可將光標(biāo)定位到此次調(diào)用的源代碼或匯編指令處。
單步類(lèi)的實(shí)例“構(gòu)造”或“復(fù)制”或“作為函數(shù)參數(shù)”或“作為函數(shù)返回值返回”或“參加各種運(yùn)算”或“退出作用域”的語(yǔ)句對(duì)應(yīng)的匯編代碼幾步后,就會(huì)來(lái)到該類(lèi)的“構(gòu)造函數(shù)”或“復(fù)制構(gòu)造函數(shù)”或“運(yùn)算符重載”或“析構(gòu)函數(shù)”對(duì)應(yīng)的C/C++源代碼處。
(Turbo?C或Borland?C用Turbo?Debugger調(diào)試,Linux或Unix下用GDB調(diào)試時(shí),看每句C對(duì)應(yīng)的匯編并單步執(zhí)行觀察相應(yīng)內(nèi)存和寄存器變化。)
關(guān)于自己是否適合編程的很簡(jiǎn)單的測(cè)試:
在報(bào)紙或雜志上隨便找一段約1000字的文章,在Word中輸入一遍。輸完后再參考下面答案:
A里面有10處以上文字或標(biāo)點(diǎn)錯(cuò)誤
B里面沒(méi)有文字或標(biāo)點(diǎn)錯(cuò)誤并敢為此跟人打賭
C里面沒(méi)有文字或標(biāo)點(diǎn)錯(cuò)誤并且字體和排版完全與原稿一致
D打印在半透明的紙上和原稿重疊在一起檢查一模一樣,且自我感覺(jué)很有成就感
A不適合編程(理由:打字準(zhǔn)確度偏低、粗心大意)
B初級(jí)程序員(理由:打字準(zhǔn)確度很高、認(rèn)真細(xì)致、自信、理解全角半角概念)
C高級(jí)程序員(理由:在B的基礎(chǔ)上理解字體和排版也是電腦打印的重要因素、但相比D還不夠偏執(zhí)、精益求精、結(jié)果可驗(yàn)證)
D軟件項(xiàng)目經(jīng)理(理由:能針對(duì)項(xiàng)目給出令人信服的細(xì)致到極點(diǎn)的需求說(shuō)明和典型測(cè)試用例。用戶幾乎挑不出毛病。專(zhuān)業(yè)?。?br />
代碼功能歸根結(jié)底不是別人幫自己看或講解或注釋出來(lái)的;而是被自己靜下心來(lái)花足夠長(zhǎng)的時(shí)間和精力親自動(dòng)手單步或設(shè)斷點(diǎn)或?qū)?zhí)行到某步獲得的中間結(jié)果顯示或?qū)懙饺罩疚募幸徊揭徊椒治龀鰜?lái)的。
提醒:再?!恋睦蠋熞矡o(wú)法代替學(xué)生自己領(lǐng)悟和上廁所!
單步調(diào)試和設(shè)斷點(diǎn)調(diào)試是程序員必須掌握的技能之一。