02 2009 檔案
摘要: “是啊,無論怎么樣,統(tǒng)一和標準是我們的需求,只有用統(tǒng)一的標準的符號我們才可以更好的交流。一個反面的例子是我們上數(shù)字電路里面的與門、非門、與非門和或門等等的邏輯符號,國家標準與業(yè)界流行的國際標準就不一樣,導(dǎo)致學(xué)生在畢業(yè)的時候可能看不懂行業(yè)內(nèi)的電路圖——就事實而論,我們大部分的電路模塊產(chǎn)品和芯片的說明手冊還是歐美的居多——這樣即加重了企業(yè)負擔(dān),可能需要再花一部分精力來培訓(xùn)新人,也增加了學(xué)生的負擔(dān)——為了在畢業(yè)的時候增加些許競爭力,不得不學(xué)習(xí)兩套符號系統(tǒng)。總之我覺得這個事情還是比較腦殘的,讓我想到窄軌鐵路……”老C借機發(fā)泄了一下從畢業(yè)就開始累積的郁悶。。。。。。
“UML是建模工具,不是編程工具。模型需要對實際的事物進行合理的剪裁和取舍,注意模型的清晰性比信息的完備性更重要,如果不論青紅皂白的將所有信息一股腦全部放在模型上,那樣圖形看起來會很恐怖的。”老C接著解釋,“所以不要要求模型完全反應(yīng)細節(jié)信息,只要在大方向上對就可以了。同時你還要了解模型所要描述的問題規(guī)模,如果是一個大型的交易系統(tǒng),按照我繪出的sequence diagram的詳細程度,那是根本不可能的。在描述這樣的系統(tǒng)時,
閱讀全文
摘要: “你體會的挺深刻的啊,”老C點點頭,“你說的沒有錯,如果照這種方式寫代碼的確有些繁雜,因為這個工作不應(yīng)當直接在編碼過程中進行,而應(yīng)當在設(shè)計過程中進行。要解決這個問題,需要引入新的工具——UML……等會再給你解釋什么是UML……”制止住小P的發(fā)問,老C接著說,“確實,將 index放在list內(nèi)部會造成種種不便,但是也有解決之道,比較經(jīng)典的做法是將index從list中拿出來單獨成為一個模塊或class,這就是 iterator設(shè)計模式,我們以后再慢慢說……”他停頓了一下,“至于怎么良好的設(shè)計list,也有一些經(jīng)驗可以總結(jié),同時也有一些業(yè)內(nèi)的慣用法,這個我們接下來會更早討論這個問題。”
“噢?那么我應(yīng)當先學(xué)習(xí)什么呢?”小P問。
“嗯,先接觸一下UML,”老C想想說道,“然后我給你講講一些關(guān)于線性表的慣用法或者習(xí)語。最后我們再來討論如何將index與它的操作從list中拿出來。”
閱讀全文
摘要: “哦?這樣有什么好處呢?”小P問道。
“最大的好處是在語言層面對基于對象的編程方法給予了更多的支持,這樣在開發(fā)的時候開發(fā)人員的智力負擔(dān)會小很多……”老C停了一下,加重了語氣,“我們做事情的目的是簡化問題,任何新工具和新方法被發(fā)明的目的都是為了使問題看起來更簡單一些,而不是使問題看起來更復(fù)雜。”老C想了想,“如果你了解了某種語言特性所針對的需求,你就可以更準確的使用這種語言特性而不會出現(xiàn)誤解,同時也會說,啊,這樣多好,不得不如此。”
閱讀全文
摘要: 老 C接過彩筆,在白板中間從上到下畫了一道線,左邊寫上思想,右邊寫上方法。“你先寫寫思想上的東西吧,”他喝了一口水,“思想是最重要的,我們需要通過學(xué)習(xí)語言來學(xué)習(xí)思想——只要學(xué)會了編程的思想,那么你再學(xué)習(xí)其他任何語言都會很快——要深入語言去學(xué)習(xí),而不是只是使用語言。首先我們的第一個經(jīng)驗是,以數(shù)據(jù)為中心思考問題,而不是以活動為中心思考問題。”
“嗯,好像沒有什么問題,如果我們以數(shù)據(jù)為中心思考問題,那么總會抽象出一些變化較少的,相對穩(wěn)定的數(shù)據(jù),將對數(shù)據(jù)的操作與數(shù)據(jù)捆綁到一個代碼單元中,這樣就可以有限度的復(fù)用已經(jīng)開發(fā)的代碼……”小P若有所思。
“呵呵,這只是一個好處,還有一些其他的好處,需要你在以后的編程中體會。”老C笑笑。這樣白板的左邊出現(xiàn)了第一個和第二個經(jīng)驗的總結(jié)。
閱讀全文
摘要: “編譯……運行……ok,我們的V1.01版本也好了。”老C又將所有文件拷貝到AppleGame_V1.01目錄下。
“等等,”小P問道,“我看不出有什么實質(zhì)性的變化啊,無非就是用一些static函數(shù)替換了原來的內(nèi)容,換湯不換藥啊。”
“呵呵,你看不出區(qū)別是因為你熟悉,如果你第一次看代碼,你會覺得是在代碼中看到QueMoveToNextChild(&(game->childrenQueue_))感覺好些,還是看到一堆鬼畫符似的結(jié)構(gòu)體點點點的感覺好?”老C解釋道,“意圖,這里強調(diào)意圖,因為使用了函數(shù)你一眼就可以看出程序執(zhí)行的意圖,而如果是一堆代碼的話,你還要反應(yīng)半天;如果明白了意圖,再去看代碼,感覺會好很多——而且你可以根據(jù)代碼意圖提出更好的實現(xiàn)方法;同時這樣也減少了代碼中注釋的工作量——一般在維護代碼的時候人們很少去修改注釋的;最后,如果你的具體實現(xiàn)需要被維護,這樣也給維護代碼的人提供了線索,無需他在源代碼程序中找來找去……如果不小心還有可能將你的代碼進行錯誤的修改……”他找到水杯,喝了一大口,“總之不要害怕小而短的函數(shù),有時它們對閱讀代碼的人來說是很
閱讀全文
摘要: “很遺憾,一般概念都伴隨一些晦澀的術(shù)語,而一般人則視術(shù)語如猛虎,認為術(shù)語只屬于學(xué)術(shù),在一般的實際開發(fā)中沒有什么用處——然而我們組織邏輯的最基本單位就是詞匯,如果我們在思考、交流的時候連基本的詞匯也無法理解,那么就根本談不上什么思考和交流了——畢竟大多數(shù)人類還是靠語言進行思考的,除了少數(shù)天才使用圖形和符號進行思考;同時術(shù)語也簡化了我們交流的復(fù)雜度,比如我說PID,只要你理解了什么是PID這個概念,那么我就不用畫出框圖并解釋這個帶有比例、積分和微分環(huán)節(jié)的反饋系統(tǒng),這樣在行業(yè)內(nèi)工作的人們可以方便的使用術(shù)語進行交流……羅嗦了這么多,只是希望你不要對這些晦澀的術(shù)語帶有排斥的心理,而是要慢慢習(xí)慣它們,接受它們……雖然有些術(shù)語名字起得的確有些腦殘……”老C喋喋不休的說道。
閱讀全文