你好,游客 登录
背景:
阅读新闻

谈谈书本《c#物联网程序设计基础》中的技术瑕疵,如果你将要读本书,请进来看看!

[日期:2018-05-14] 来源:博客园精华区  作者: [字体: ]

  今天去书店看到一本名为《 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的误解,可能将读者误入歧途。

收藏 推荐 打印 | 录入:Cstor | 阅读:
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款