我接觸程序的時(shí)間也不算長(zhǎng),也不算太短。從高一開(kāi)始接觸Pascal,完全是為了競(jìng)賽。只是最后這競(jìng)賽也沒(méi)吃到什么好果子。高一下的時(shí)候有些經(jīng)不住Win32窗口程序的誘惑,開(kāi)始擺弄Delphi。但是無(wú)奈當(dāng)時(shí)水平實(shí)在太差(連類和對(duì)象都分不清楚),肯定也就寫(xiě)不出來(lái)什么像樣的程序。
高三開(kāi)始學(xué)習(xí)C++,也是從 cout << "Hello World!" << endl 開(kāi)始的。
所以許多年來(lái),我一直都局限于程序自身,但是從來(lái)就沒(méi)有完整的沒(méi)有什么Bug的完成一款桌面程序。從Delphi,到C++Builder,到VB,到MFC,到WTL,到Python,莫不是如此。
究其原因是因?yàn)槲乙恢币詠?lái)就沒(méi)怎么深刻理解Windows消息機(jī)制,每次寫(xiě)Win32程序都要對(duì)界面琢磨半天,可能還要搞大量的Prototype來(lái)證明方案的可行;寫(xiě)完了又花費(fèi)大把大把的時(shí)間去調(diào)試界面程序。而且又往往會(huì)在使用的時(shí)候才發(fā)現(xiàn)問(wèn)題。
早先用Delphi的時(shí)候,我犯了一個(gè)極度愚蠢的錯(cuò)誤,就是錯(cuò)誤的把程序的界面框架當(dāng)作了程序框架。換句話說(shuō),一個(gè)最明顯的情況也就是,把所有的代碼/邏輯都放在了EventHandler里面。這樣做的壞處不言而喻。稍微有點(diǎn)工程意識(shí)的,都知道這樣做是很不好的。邏輯按照邏輯,界面邏輯按照界面邏輯,這之間應(yīng)當(dāng)是松耦合的。