设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
【万泉河】PLC程序中的面条代码
返回列表
发新帖
[西门子]
【万泉河】PLC程序中的面条代码
[复制链接]
63479
|
0
|
2024-3-13 10:52:08
|
显示全部楼层
|
阅读模式
【万泉河】PLC程序中的面条代码
昨天,有网友在微信群里转发了一篇文章《面向对象就是一个错误!》,链接在文末;
被吓了一跳,也太耸人听闻了。赶紧打开浏览了一下,原来是老概念了,这次又改头换面,专门博人眼球来了。
只不过,以前还只在IT界流传,这回跑到PLC编程领域来了。好家伙,我们这儿刚刚打通标准化编程架构,刚刚用上面向对象方法,用得正爽呢,有人直接端着机关枪把后窝给端了:面向对象编程方法是错误的,赶紧投降吧!回到经典编程方法吧。
我以前对这种理论的认知是,一些半吊子的程序员,类的继承和重构的过程中,应用不规范。过分玩弄编程技巧,把挖掘编程语言的漏洞当成高级技能。比如C语言中甚至可以重构+方法,原本的正常的+运算,都可以给重构为*,编译也仍然可以通过,但原本的程序功能就被搅乱了。你以为只需要简单替换方法,少一些代码,实现了通用的功能,但带来了风险,有可能影响到原程序的功能,在不起眼的地方,就有可能带来bug。
但这些,在面向对象功能都不完善的PLC领域,不足畏惧,因为,它还根本不支持。
然而,这次又对其中大为抨击的面条代码搜索了一下相关文章,发现一篇文章讲的比较透彻《jQuery === 面条式代码?》,其中一段话深得我心:
写class并不代表你就是面向对象,面向对象是一种思想而不是你代码的组织形式。
对应到PLC领域,就是:
写FB / AOI 并不代表你就是面向对象,面向对象是一种思想而不是你代码的组织形式。
所以,在PLC编程中,那些不理解标准化架构思想,也人云亦云的做一些FB库函数,然后其实自己用的耦合与内聚不能分清,乱做一团的,可想而知,基本就是一锅意大利面条。
我以前形容为一锅粥的,现在知道了,更规范的词汇是,意大利面条。
在分析面条代码时,文中给出的配图是这样的:
左侧勾勒出的几根线, 确实像极了意大利面条的样子。
而如果把这里面的X,Y,替换为MW10, MW20,这不就是标准的PLC程序么!而区别是,这里的面条还只在本代码页面里缠绕,而很多人写的PLC程序,就是在整个PLC范围内乱缠了。远比上图复杂多了。
而搜索意大利面条,竟然得到了这样的图片:
右侧即为形容面条代码带来的垃圾山架构。说不清理还乱的相互引用关系。而这个图片,说的不就是传统PLC程序中的交叉索引表嘛!
我以前写过文章:《【万泉河】PLC高级编程:抛弃交叉索引》,其实就是指出了这种传统编程方式的落后与混乱。
从此以后,我们可以对这种交叉索引结果使用一个规范名称了,面条。
我们也可以理解了,大部分工控工程师宣扬的底线,绝不愿意修改别人的程序,情愿自己从头写。原来,大家反对的是面条代码啊!
只不过,如果你自己的程序架构与老的架构相比,并没有彻底升级改变,还仍然一样的方法,那无非是一碗意大利面条撤下,换上来一碗乌冬面而已。
无非,这碗乌冬面你自己亲手下的,线索规则暂时还在脑子里记忆的比较清楚。
再来一张乌冬面的图片:
有没有感觉味道会比意面更可口呢?(缠绕越紧密, 味道越丰富哦!)
与众多工程师反对读懂他人的程序对应的是,我最近两年的项目,所请的调试工程师,都是好言相劝他们保守技术秘密,得到程序后,允许把同样的方法用在自己项目中,但不要分享给别人。没办法,不能不许人学啊!
还有合作的公司,就担心,新招来的员工,干不长久,短时间就离职了,却不经意得到了核心代码,对公司损失就大了。
最后,分享一个不知出处的某汽车厂的SICAR标准的程序,请在公众号《PLC标准化编程》后台,回复:“SICAR面条”,得到代码。
我曾经在读过SICAR程序后,在被追问我们推行的标准化编程,与汽车行业流行的SICAR标准什么区别的时候,鼓足勇气给了个评价:大垃圾。而后得到了很多认同,有同行纷纷表示支持我这种判断。
我们从此以后对其更标准的评价是,面条。
方便面。
【链接】面向对象就是一个错误!
【链接】jQuery=== 面条式代码?
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
天外飞仙
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』