談談書本《c#物聯網程序設計基礎》中的技術瑕疵,如果你將要讀本書,請進來看看!


今天去書店看到一本名為《c#物聯網程序設計基礎》的書,對物聯網感興趣的我抓起來就看,書中的項目都是上位機開發項目,較簡單,如果物聯網開發只是這樣,看起來我做物聯網開發也是綽綽有余。這邊書我看了十幾分鍾就看完了,其中的技術硬傷讓我不得不正視。此書說使用wpf來寫程序,但除了創建一個WPF項目,用WPF來寫界面,和wpf沒任何關系,代碼還是寫在后台,后台代碼還是以Winform的方式來寫。請問作者是不是對WPF有什么誤解?

用WPF來寫你不用MVVM模式來寫?好吧,就算因為是小項目,不用MVVM模式來寫,后台代碼也以WPF來寫吧?比如命令、綁定、值轉換器等,下面列舉書里的幾個例子,來讓大家看看本書中的技術瑕疵。

這里定義了一個實體類,既然定義了實體類,那順便用mvvm模式來分層很難嗎?

 

 

實現函數btnCollect_Click,讓button上顯示“開始采集”、“停止采集”有很多優雅的方式,為何用這么丑陋的方式實現?既然本書說用wpf來寫的,在類里也定義了isCollecting的布爾類型,直接用WPF的值轉換器更直截了當,定義一個屬性,在button上綁定此屬性的值轉換,函數btnCollect_Click一句話代碼就能實現了,也能讓讀者體會了什么是WPF,WPF的精韻是什么。而且就算是像書中的方式來實現函數btnCollect_Click,寫個變量很難嗎?先將“開始采集”、“停止采集”分別賦予兩個不同的字符串變量,再在這里調用不可以?沒有經驗的人可能覺得多此一舉。但想象一下,當需要在另一個函數中也要讓此button顯示“開始采集”、“停止采集”,賦予變量的方式是不是就方便了很多?而當“開始采集”的文字要修改為“開始”或其它字符時,你不用到幾個地方修改文字,只需要修改字符串變量的值。可能有人說這是小項目,這樣做多此一舉。但好的習慣就應該從開始接觸編程做起。要是像書中這樣的編程習慣用到項目中,輕則狗血噴頭,重則被辭退。

如果是用WPF來實現函數Page_Loaded,像書中這樣的方式是要被噴的——書中是標准的winform做法。WPF的做法是定義串口、波特率的集合或類,然后分別綁定到下拉框列表控件cmbPort、cmbBaudRate上。

 

如果說上面是用WPF寫后台代碼,與后台代碼結合方面有問題,那下面說到的就是作者使用WPF布置界面方面的問題:

1、控件的共用樣式都寫在了控件里而不是寫在共用樣式里,如果實習生敢這樣寫亂棍打死。

2、WPF控件中的高度、寬度一般不用Height,而是用MinHeight、MaxHeight來定義最小高度、最大高度,以讓控件實現不同窗口大小情況下的自適應——這是WPF寫界面的優勢,而作者拋棄了,用winform的思維來實現,界面代碼中充斥着大量的Margin也是winform思維的體現。

 

也許作者解釋:引入大量的WPF特性,會增加學習成本。那你可以分成Winform項目和WPF項目。winform項目作為書中標准的一部分,而wpf項目則作為擴展閱讀,讓對真正WPF技術有興趣的人去學習。而不是說“本書用到wpf”而硬生生的一直用winform方式寫項目,這可能會導致讀者對WPF的誤解,可能將讀者誤入歧途。

最后,祝《c#物聯網程序設計基礎》下一版本實現質的飛躍!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM