萬泉河
WX:ZHO6371995,歡迎+
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 130 個(gè)
工控威望: 246 點(diǎn)
下載積分: 831 分
在線時(shí)間: 11(小時(shí))
注冊時(shí)間: 2021-06-11
最后登錄: 2024-11-07
查看萬泉河的 主題 / 回貼
樓主  發(fā)表于: 2022-12-19 09:59
1218 【萬泉河】誰有資格評價(jià)PLC程序?qū)﹀e(cuò)

誰有資格,答案當(dāng)然是從事CODE REVIEW的同事咯!
然而眾所周知,在PLC行業(yè),絕大部分的公司,是沒有CR機(jī)制的。 從來都是誰寫的程序誰自個(gè)兒調(diào)試自個(gè)兒維護(hù),一桿子負(fù)責(zé)到底。 沒有另外的人幫你CR的。我曾經(jīng)寫文章探討過關(guān)于CR的可行性,以及期待行業(yè)中最終能發(fā)展出可以通行的CR的標(biāo)準(zhǔn)。 但至少現(xiàn)在,還沒有。 所以即便有個(gè)別公司和同行同事之間有那么零星的符合CR機(jī)制的流程,但在還沒有見諸紙面的可分享的CR標(biāo)準(zhǔn)之前,我們只能認(rèn)為不存在。

那么,除此之外,還有誰擁有這樣的資格呢?

讓我們把疑問暫時(shí)放在一邊,來看一張圖,其實(shí)是一段程序。






是我在前面一篇文章《1209 【萬泉河】江湖又現(xiàn)萬線圈》中引用過的一段程序。原始程序是一名網(wǎng)友貼出的。而后面的紅線部分是被我修改之后的,修正了原程序中的bug。

文章發(fā)表以及這個(gè)圖片的程序被轉(zhuǎn)發(fā)之后,在同行之間引發(fā)了不少爭議。我粗略估計(jì)下,支持的和反對的大概各有一半。 有一半同行支持這樣的程序?qū)懛,甚至其中的錯(cuò)誤也是這些朋友們幫忙發(fā)現(xiàn)的。我原本只看了一眼程序的寫法,對具體的邏輯根本沒關(guān)心,有錯(cuò)誤去改正即可,不算什么大事。而反對的同行中則理由各不一致,根據(jù)自身預(yù)設(shè)的立場高低不同,分成了幾派,后面逐類分析。

不過在分析之前,先對一種反對聲音做出反駁。有那么幾個(gè)零星的聲音,觀點(diǎn)是:這么簡單的程序還用得著討論嗎?

這部分的觀點(diǎn)表達(dá)時(shí)語氣基本相同,都是用反問質(zhì)問的語氣,然而同時(shí),你又看不出他是在表達(dá)支持還是反對。其實(shí)叫我說,這樣的語焉不詳?shù)谋磉_(dá)觀點(diǎn)的習(xí)慣,恰恰證明了這些人的思考能力和水平。

答案多簡單!同行們對這個(gè)問題的觀點(diǎn)分歧都基本達(dá)到旗鼓相當(dāng)了,還認(rèn)為不值得討論。那么請問, 什么樣的問題值得討論呢?有分歧當(dāng)然需要討論了,通過充分討論,每個(gè)人認(rèn)識到自身認(rèn)知的差距,然后整個(gè)行業(yè)的認(rèn)知水平才可以提高。那些認(rèn)為這種小事的分歧不重要,無所謂,沒必要投入太多的精力在這方面的,足以見其基本功是沒有的。做事情都是在那兒摸著石頭過河,走到哪兒算哪兒的。 當(dāng)然啦,咱也不是非要堅(jiān)持自己的觀點(diǎn)正確,你如果認(rèn)為沒必要討論,自己不感興趣,那你就視而不見不參加討論即可。沒必要阻止別人討論探討。否則就需要好好解釋下你用心何在了。

回來看反對派陣營,觀點(diǎn)中從高到低主要有三類。

1, 斥責(zé):這是典型的腳踩西瓜皮貼狗皮膏藥!
然后甚至不管三七二十一以他自己的習(xí)慣方法直接對程序方法做了修改。
2, 表示:如果我的團(tuán)隊(duì)中有這樣寫程序的成員,我會勸其離職。
3, 抱怨:不按常規(guī)寫別人不容易讀懂的程序,將來別人無法維護(hù)。非常討厭。

我對這些觀點(diǎn)自下而上逐個(gè)回復(fù)和探討:

關(guān)于維護(hù)的概念有兩種理解,可以是甲方的維護(hù)工程師,要么是自己公司后來的繼承者或者叫做接班人。

如果指的是甲方,那確實(shí)沒有辦法。收人錢財(cái)替人辦事,人家作為甲方既然對寫程序的姿勢有具體的要求,你當(dāng)然要全盤滿足。這個(gè)時(shí)候,其實(shí)你也不是什么設(shè)計(jì)師工程師,就是個(gè)嚴(yán)格的執(zhí)行者而已。甲方單位既然有完整的解決方案, 甚至有模版給你抄,你就老老實(shí)實(shí)照著抄,也不需要有什么不一樣創(chuàng)新想法在里面。遇到這樣強(qiáng)大且強(qiáng)勢的甲方,做一個(gè)溫順聽話的執(zhí)行者也不錯(cuò)。如果對此有些不滿,覺得這種行規(guī)限制了自己的自由發(fā)展空間,也不要抱怨,要抱怨只抱怨自己命不好,去錯(cuò)了行業(yè)。你只要還在這個(gè)行業(yè)謀生,就遵守他們的行規(guī)。比如整個(gè)汽車行業(yè)盛行的SICAR標(biāo)準(zhǔn),就是如此。  

而如果指的是后來的繼承者,這個(gè)指責(zé)和抱怨就非常沒有道理了。等于是后來者給先行者下了緊箍咒。而且有可能先行者在開發(fā)設(shè)備程序邏輯的時(shí)候,這個(gè)后來者還不存在, 還沒有來到公司。 卻要求先行者提前預(yù)料到后來者的智商和理解力水平,需要包容他們有可能看不懂學(xué)不會,所以在系統(tǒng)設(shè)計(jì)中要避免。那么這樣的話,設(shè)計(jì)中想要應(yīng)用什么新功能新技術(shù)都要好好掂量下了。 如果未來的接班人是個(gè)笨蛋,學(xué)不會咋整呢?

總之,后來的學(xué)習(xí)者給先行的導(dǎo)師提要求設(shè)框框,是不可理喻的。

而第二檔的以團(tuán)隊(duì)頭目出現(xiàn)的,對與自己的習(xí)慣不同的同事而容不下的,我的評價(jià)是:這不是典型的武大郎開店嘛!容不下比自己個(gè)頭高的。

如果這個(gè)新同事,設(shè)計(jì)方法完全錯(cuò)誤,一團(tuán)糟,根本不能運(yùn)行,而又不聽話,如我在上篇文章中所講述的,最后還需要你這個(gè)老大來主導(dǎo)所有設(shè)計(jì)從頭再來,導(dǎo)致非但沒能給與幫助,反而幫了倒忙,那么這個(gè)助手在這個(gè)團(tuán)隊(duì)中確實(shí)沒啥必要存在了?梢栽诮o予幾次機(jī)會后酌情考慮請其另謀高就了。

但現(xiàn)在的情況是,程序設(shè)計(jì)方法明明是可行的, 設(shè)備是可以正常運(yùn)行的,甚至有可能最終的設(shè)計(jì)比你遵從傳統(tǒng)方法的更有優(yōu)勢。 但現(xiàn)在僅僅是因?yàn)椴环夏愕牧?xí)慣, 甚至可能是因?yàn)樽龀隽四憧床欢母呒壍脑O(shè)計(jì),你就容不下,就要千方百計(jì)排擠下屬出局,那說明你這個(gè)團(tuán)隊(duì)小頭領(lǐng)是不稱職的,公司領(lǐng)導(dǎo)把團(tuán)隊(duì)交到你手里,讓你來帶,是需要你不斷挖掘培養(yǎng)創(chuàng)新人才,提高團(tuán)隊(duì)創(chuàng)新水平的。而不是任人唯親,以己度人,把團(tuán)隊(duì)帶到武大郎的燒餅店一般越來越窩囊。

所以,真正需要卷鋪蓋走人的,或者把位置讓出來的,應(yīng)該是你自己。

對上述所有觀點(diǎn)的綜合看法,我的評價(jià)是:

我非常驚訝的是這個(gè)行業(yè)的普遍現(xiàn)象, 不善于吸取別人的長處。 明明是自己看不懂的設(shè)計(jì),卻不肯承認(rèn), 然后能按自己的價(jià)值觀給出各種各樣奇談怪論的評論。
表達(dá)一下自己的謙卑和學(xué)習(xí)欣賞態(tài)度就那么難嗎?

討論中,倒是有一位群友的態(tài)度非常坦誠:憑直覺覺得這段程序是錯(cuò)的,然而研究下來它偏偏能正確運(yùn)行。不懂怎么回事。

這位群友以前搞過技術(shù),現(xiàn)在已經(jīng)放棄技術(shù)去搞市場銷售了。對于這樣的開放心態(tài)的人,我就十分欣賞。說明他并不是技術(shù)搞不好而轉(zhuǎn)行去做銷售,而恰恰是技術(shù)搞得好之后,才有能力從事更富有挑戰(zhàn)性的工作。

我曾經(jīng)寫過好多篇關(guān)于評價(jià)程序好壞的標(biāo)準(zhǔn),當(dāng)然,那些標(biāo)準(zhǔn)都是基于效率的,評價(jià)一個(gè)好的程序和壞的程序的標(biāo)準(zhǔn)是有利于效率的提高。

那個(gè)時(shí)候,總有一些人冒出來總結(jié)到:能夠正確運(yùn)行的程序就是好程序,這回,有一個(gè)能正確運(yùn)行的程序出來了,先不論它是否夠效率高,按這些人的觀點(diǎn),首先應(yīng)該接受,而不是否定,更不是不加分析直接要消滅它呀!所以在沒有CR之前, 除了程序的設(shè)計(jì)者自己,無人有資格評價(jià)程序。檢驗(yàn)程序?qū)﹀e(cuò)(注意不是好壞)的唯一標(biāo)準(zhǔn)是機(jī)器。程序只要在機(jī)器上能運(yùn)行正確,就無人有資格說錯(cuò)。

最后分析下這個(gè)程序的缺點(diǎn)。

從常理來講,大家通常建議編寫程序的風(fēng)格方法要有一致性。這個(gè)程序,前面手動部分用的是SR,而后面的自動部分用的啟保停。風(fēng)格極其相悖,也難怪導(dǎo)致眾多老工程師勃然大怒。

我曾經(jīng)嘗試過要把它們風(fēng)格統(tǒng)一,要么全都SR, 要么全都啟保停。 然而反而有些困難。把前段改為啟保停實(shí)現(xiàn)難度相當(dāng)大,改完以后的邏輯反而不如現(xiàn)在容易閱讀。

而把后段改為SR,難度稍低了一些,也比原來容易閱讀,出錯(cuò)的機(jī)會也低多了。 至少,自動狀態(tài)不再干擾手動模式的邏輯了



原本T37的條件中隱含了自動模式的條件,現(xiàn)在重復(fù)使用一下,邏輯就比較通順了。

如果程序最初的作者,用這樣的方式寫程序,或許就不會引來那么多反對聲音,甚至一不小心得罪老大丟掉飯碗的風(fēng)險(xiǎn)了。

然而,兩種程序?qū)懛ㄊ堑葍r(jià)的,能實(shí)現(xiàn)的功能是一樣的。

hsiung
Just do as you want.
級別: 家園常客
精華主題: 1 篇
發(fā)帖數(shù)量: 506 個(gè)
工控威望: 931 點(diǎn)
下載積分: 8747 分
在線時(shí)間: 86(小時(shí))
注冊時(shí)間: 2008-09-04
最后登錄: 2024-12-21
查看hsiung的 主題 / 回貼
1樓  發(fā)表于: 2022-12-20 09:57
老萬的研究精神值得肯定
Evaluate your time,
Controll your life.
ytzidonghua
plc 觸摸屏 自動化技術(shù)培訓(xùn)等電話0535-6380506
級別: 網(wǎng)絡(luò)英雄
精華主題: 0
發(fā)帖數(shù)量: 2396 個(gè)
工控威望: 7021 點(diǎn)
下載積分: 5011 分
在線時(shí)間: 368(小時(shí))
注冊時(shí)間: 2006-09-27
最后登錄: 2024-12-27
查看ytzidonghua的 主題 / 回貼
2樓  發(fā)表于: 2022-12-20 09:59
能解決實(shí)際問題就好  
plc 觸摸屏 變頻器 編程電纜,plc培訓(xùn)等
plc觸摸屏遠(yuǎn)程下載,遠(yuǎn)程監(jiān)控
手機(jī)APP監(jiān)控plc
QQ 365871920
電話13396452298
www.ytleader.com
羅的密歐
級別: 論壇先鋒
精華主題: 0
發(fā)帖數(shù)量: 126 個(gè)
工控威望: 1209 點(diǎn)
下載積分: 7766 分
在線時(shí)間: 105(小時(shí))
注冊時(shí)間: 2022-07-22
最后登錄: 2024-12-20
查看羅的密歐的 主題 / 回貼
3樓  發(fā)表于: 2023-01-12 08:59
之前寫程序的人走了,接班的人只能小心翼翼的修改程序
天下風(fēng)云出我輩,一入江湖歲月催,皇圖霸業(yè)談笑中,不勝人生一場醉。

提劍跨騎揮鬼雨,白骨如山鳥驚飛。塵事如潮人如水,只嘆江湖幾人回。
山大王
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 155 個(gè)
工控威望: 286 點(diǎn)
下載積分: 485 分
在線時(shí)間: 150(小時(shí))
注冊時(shí)間: 2008-09-10
最后登錄: 2024-10-27
查看山大王的 主題 / 回貼
4樓  發(fā)表于: 2023-04-22 12:16
最初寫時(shí)很亂,后來就規(guī)范了,容易讀改了,現(xiàn)在只有我自己一個(gè)人看得懂,只為了保密性。
wxjwlj
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 130 個(gè)
工控威望: 284 點(diǎn)
下載積分: 861 分
在線時(shí)間: 89(小時(shí))
注冊時(shí)間: 2008-07-12
最后登錄: 2024-12-25
查看wxjwlj的 主題 / 回貼
5樓  發(fā)表于: 2023-05-08 15:18
到處都看得到這個(gè)垃圾