Re: [問題] 請教適合C++應用程式開發的書
我剛開始學GUI程式的時候,流程是這樣的(我想初學者很容易這麼做吧 XD):
(1) 開啟一個GUI專案(當時使用的語言是C#)
(2) 一邊思考一邊把介面(Textbox、Button等)拉好
(3) 從Button的處理函式開始寫程式碼。譬如說我要寫個排序的程式:
void btn_start(Object o, EventArgs args) // 以C#的語法為例
{
string input = txtInput.Text;
// 處理input,把string變成int陣列
// 排序演算法(一大串程式)
// 把排序結果擺在textbox或其他什麼東西上面
}
這樣的程式絕對是可以跑的,拿去交作業也很ok
但是演算法跟視窗介面黏在一起,就會有一些討厭的缺點,譬如
(1) 我沒辦法把那個排序演算法拿到別的地方使用,除非複製貼上再修改
(2) 我沒辦法隨意的換掉排序演算法(譬如把bubble改成quick)
後來我就會先把演算法先用 console專案 寫好,譬如弄個
int* bubble_sort(int* inputs)
{
// 一大串排序演算法
// 重要的是,這個函式不應該有input/output的動作
// 譬如scanf, printf或cin, cout都不該寫在這裡
// 要不然拿去視窗介面的時候,還需要修改這個函式的內容
}
int main()
{
// 讓使用者輸入一串數字(scanf或cin應該在這裡用)
// 丟入 bubble_sort 函式
// 把結果輸出(printf或cout應該在這裡用)
}
這樣只要在console程式底下除錯、確認函式是ok的
再拿到視窗程式去,不但可以重覆使用、而且也不會跟視窗的介面太緊密
這是個很簡單的例子,畢竟要怎麼漂亮的切割,我也還需要學習 XD
很多情況都比這個例子還要複雜難搞
但只要一想偷懶的話,介面跟演算法又黏起來了 XDDD
其實我還做不到 MVC 那麼好的規劃
但是避免直接把演算法寫在 handler function 裡,其實就差很多了 XD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.117.171.46
※ 編輯: james732 來自: 140.117.171.46 (05/04 18:39)
→
05/04 18:43, , 1F
05/04 18:43, 1F
其實在C#之前,我就先寫過Win32跟MFC了
不過以上兩者都讓我迷失在奇怪的細節....orz
※ 編輯: james732 來自: 140.117.171.46 (05/04 18:47)
推
05/04 18:47, , 2F
05/04 18:47, 2F
推
05/04 19:00, , 3F
05/04 19:00, 3F
→
05/04 19:01, , 4F
05/04 19:01, 4F
→
05/04 19:02, , 5F
05/04 19:02, 5F
→
05/04 19:02, , 6F
05/04 19:02, 6F
板主不考慮發篇文嗎 XD
※ 編輯: james732 來自: 140.117.171.46 (05/04 19:03)
→
05/04 19:05, , 7F
05/04 19:05, 7F
推
05/04 20:33, , 8F
05/04 20:33, 8F
→
05/04 20:33, , 9F
05/04 20:33, 9F
→
05/04 21:04, , 10F
05/04 21:04, 10F
推
05/04 21:18, , 11F
05/04 21:18, 11F
推
05/04 21:50, , 12F
05/04 21:50, 12F
→
05/04 21:51, , 13F
05/04 21:51, 13F
推
05/04 21:55, , 14F
05/04 21:55, 14F
→
05/04 21:56, , 15F
05/04 21:56, 15F
→
05/04 21:56, , 16F
05/04 21:56, 16F
→
05/04 21:57, , 17F
05/04 21:57, 17F
→
05/04 21:57, , 18F
05/04 21:57, 18F
→
05/04 21:57, , 19F
05/04 21:57, 19F
→
05/04 21:59, , 20F
05/04 21:59, 20F
推
05/04 22:15, , 21F
05/04 22:15, 21F
→
05/04 22:15, , 22F
05/04 22:15, 22F
推
05/04 22:31, , 23F
05/04 22:31, 23F
→
05/04 22:33, , 24F
05/04 22:33, 24F
→
05/04 22:34, , 25F
05/04 22:34, 25F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 3 篇):