打印
[信息]

【转】搞电子也要懂设计模式

[复制链接]
1208|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
南国先生|  楼主 | 2017-1-9 12:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
什么是设计模式?
用特定的工具完成一件特定的任务,大家总是能想到很多方法。经过无数工程师的尝试之后,大家总结出了一些最优的方法,比如说“在某某情况下实现某某目的,采取什么做法最可靠、最可扩展”,这些经过总结的做法,就称为设计模式。

(联合收割机:解决收获问题的设计模式)
设计模式不是设计规范,它没有强制性,但它可以帮助你用优雅、可靠、可维护的方式解决一些前人已经解决过无数遍的问题,并在这个过程中吸收前人的精髓思想。如果你想解决的问题是工程问题而不是科学研究,你就必须得懂一点设计模式。
比如说半个世纪前,计算机程序是没有select(分支结构),也没有while(循环结构)的,一切都用goto(地址跳转)来实现。后来大家写程序写得多了,就有人发现:其实大多数编程工作都是在用goto实现select和while的功能。后来我们就把这些结构归纳为基本的设计模式,几乎所有高级编程语言都继承了这些设计模式,让我们可以方便地写程序。
搞软件有设计模式,搞电子其实也有设计模式。比如我们学单片机,往往学会了“单片机可以怎么编程”,却没有搞明白“单片机应该怎么编程”,后果就是程序一旦复杂起来,有时就不知道该怎么写了;或者有的问题搞了两三个月,结果换成人家两三个星期就搞好了。最后虽然知道了单片机是怎么工作的,但有些功能就是做不出来。

我经常看到很多人提问,说我要用单片机加某个传感器实现某个功能,程序怎么写?求大神帮忙!!!这些同学是不会写程序吗?不是的,他们会写for和while,只不过他们不了解单片机程序的一般设计模式。如果是验证工作原理,程序就很简单;要组成一个系统,系统间各个部件要协作,这个程序就不是谁都会写了。很多没有接受过工程教育的爱好者,甚至一辈子也写不出能流畅工作的程序,只好天天找大神求助,却不知道还有“设计模式”这回事。

举个例子,论坛有很多同学想自己用单片机设计数据采集系统,比如航电、数采卡之类的,并通过这个过程学习单片机程序设计。问题是,这些程序究竟该怎么写?写一个while循环吗?应该在中断内还是中断外处理数据?怎么实现延时?怎么实现多任务?于是这些同学就到处提问,成为了社会的负担。

还有的同学靠蛮力去尝试,那简直就是在浪费生命。假如他们了解那些经过检验的设计模式,就可以节省很多无用功。所谓跟牛人做项目,看高手写代码,拆机器拍电路,其实都是在学习设计模式。不过,这些学习方法都是野路子,效率很低。如果我想正经地学一下设计模式,有什么捷径吗?

我印象中科创除了joyeep发过一次他的软件设计模式库之外,就没有人提过这些事了,包括KC901的团队也只跟大家讲过一些原理性的东西,没有讲过设计模式。而决定一个工程项目(也就是绝大多数DIY项目)周期长短的关键,往往就是设计模式而不是基础理论。
对于单片机相关的设计,我推荐《时间触发嵌入式系统设计模式》,这本书是老外写的,写的很好。

最后,祝大家开发愉快。

[修改于 1 个月前 - 2016-12-10 19:52:41]




德国公车1 个月前 -2016-12-10 20:02828252

1阶

我也有就是做不出来东西的感觉,但是看了楼主的帖子感觉还是有点模糊




深深1 个月前 -2016-12-10 20:17828253

2阶

有意思,不错




amo1 个月前 -2016-12-10 20:42828257

3阶

很好的**!
以我从业十多年的经历,感觉这个行业越来越浮躁了。以前搞过兴趣小组,人气随着那批学生毕业改行,慢慢没了;发起过几个DIY活动,只有几个表示口头支持,但是浏览量很大,最终都是自己单独干,群里的人进进出出,顶着一堆火星文昵称坐等成果,无力吐槽……;招过几次新员工,当时3K的行情给5K试用,也描述了职业规划,没有画大饼,但都是学会一点就跳槽了……现在基本是跟友好的公司合作,各赚一块。
总结:对新手不用报太多想法和期望,想懂的自然会懂(他会问,会搜索、看书主动学习),不想懂的你花心思去教还招人恨(浪费了打游戏、泡妞的时间)




发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

68

主题

160

帖子

3

粉丝