//因為自己的水平很菜,所以寫寫小程序鍛煉鍛煉,高手就不要看/了。
好吧,說一些簡單但是我認為重要的東西吧。
在我這個層次(很菜很菜)的人看來,寫大程序應該是一種很神圣的事情了。因為一般在公司做事,就是分配一些模塊,小的幾百行,大的上萬行,就基本搞好了。
自己完整地寫一個上十萬行的東西(當然,不能爛到連自己都不喜歡的程度?。?,在我看來,應該還是需要一些東西的。
至少需要一些程序框架設計的思想在里面,沒有面向對象設計思想在里面,以我目前的水平來看,基本上結構是很難清楚 的。
好了。我們開始涉入正題了。
就是程序的框架和設計思想,我要結合掃雷來說。(掃雷?是,掃雷,window系統自帶的那么幾個小游戲中的一個,很簡單嗎?我不覺得)。
注:我在分配地雷的時候不知道算法了。所以到中搜索了一下,看了兩個人的掃雷的代碼,直白點說吧,一個寫的代碼,我只看了30秒,就被我從我的硬盤上shift+delete了。
原因是:
1 結構很混亂(這個至關重要),程序沒有好的結構就表示你的思想一片混亂。
2 沒有注釋,格式完全沒有規范。格式,這個在我看來,也是不能容忍的。
另一個的代碼也是,就是一個CxxDlg就交代了。
在我目前的眼光來看,掃雷雖然小,卻可以很好的體現面向對象的思想。
簡單的分析一下,各位看官見笑了。
三個層次。(project為基于對話框的project)
CXXDlg 對象(對話框,管理地雷陣)
|
|
CMesh對象(地雷陣,管理一個一個的格子)
|
|
CGrid對象(一個一個的格子,最基本的單位)
這就是我所理解的掃雷和面向對象的思想的具體體現。
在分清了對象層次后,就好著手考慮屬性和方法,說起來很簡單,在我看來,沒有一定的代碼經驗,在分析屬性和方法的過程上是會有一點點問題的,這個問題是需要實踐的,不好說。
然后必須確定一個原則:由誰來處理消息,答案是:誰的消息就讓誰來處理。
上面是我的處理原則(我的實踐證明,很有效)。
舉例來說吧,在某一個格子區域單擊了鼠標左鍵,怎么處理?
我的處理:首先是 CXXDlg 對象得到消息,傳遞給CMesh對象,CMesh對象再傳遞給CGrid對象處理。
好吧,就這么多吧。
原文轉自:http://www.anti-gravitydesign.com