谈谈书本《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#物联网程序设计基础》下一版本实现质的飞跃!

转载于:https://www.cnblogs.com/ssvip/p/9029988.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
字符画。 首先,需要选取一些文字符来构造字符表。我们可以选择一些常见的汉字,如“山”、“水”、“人”等。然后,为了让字符画更加真实、细致,我们可以根据字符的灰度值来选择不同的字符。例如,灰度值较低的地方可以选择密集的字符(如“口”、“十”等),灰度值较高的地方可以选择稀疏的字符(如“田”、“日”等)。 下面是一个简单的程序,实现了将一张图片转换为文字符画的功能: ```python from PIL import Image # 定义字符表 char_table = [' ', '口', '十', '人', '山', '水', '云', '月', '日', '田'] # 加载图片并转换为灰度图像 img = Image.open('test.jpg').convert('L') # 获取图像的宽度和高度 width, height = img.size # 遍历每个像素,根据灰度值选择对应的字符 for y in range(height): line = '' for x in range(width): # 获取像素点的灰度值 pixel = img.getpixel((x, y)) # 根据灰度值选择对应的字符 char_index = int(pixel / (256 / len(char_table))) line += char_table[char_index] print(line) ``` 在上面的程序,我们使用了Python的PIL库来加载图片并将其转换为灰度图像。然后,我们遍历每个像素点,根据其灰度值选择对应的字符,并将字符拼接到一起,最终生成了文字符画。 需要注意的是,上面的程序只是一个简单的示例,生成的字符画可能不够真实、细致。如果需要生成更加真实、细致的字符画,可以考虑使用更加复杂的算法,或者使用更加丰富的字符表。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值