為什么現(xiàn)代的低代碼開發(fā)平臺都不支持導(dǎo)出源代碼?(為什么源代碼不出第二部)
初次接觸低代碼的程序員大多會糾結(jié)一個問題,為什么功能越強(qiáng)大的低代碼開發(fā)平臺越不會提供導(dǎo)出源代碼的功能?
要想回答這個問題,我們得回顧一下低代碼開發(fā)的發(fā)展史。事實(shí)上,支持導(dǎo)出源代碼的低代碼工具,是上一個時(shí)代的產(chǎn)品了?,F(xiàn)在,大多數(shù)還有研發(fā)能力而且愿意推進(jìn)產(chǎn)品化的低代碼廠商都已經(jīng)完成了或者正在進(jìn)行向元數(shù)據(jù)驅(qū)動的轉(zhuǎn)型。
站在2023年,國內(nèi)低代碼行業(yè)的廠商多樣性太強(qiáng),魚龍混雜。為了說清代碼生成器和元數(shù)據(jù)驅(qū)動的差異和優(yōu)缺點(diǎn),我們可以用Windows桌面程序的可視化開發(fā)作為類比,畢竟Visual Studio可以算是低代碼的鼻祖之一了。
最初Visual Studio和更早期的Visual Basic在設(shè)計(jì)界面時(shí)采用了代碼生成器的技術(shù)方案,IDE將用戶拖拽控件、設(shè)置屬性的動作直接翻譯成操作這些控件的代碼。用戶可以直接獲取到這些代碼,如果有需要則可以通過修改這些代碼來實(shí)現(xiàn)對VS可視化開發(fā)能力的擴(kuò)展。
(Visual Studio 生成的WinForm代碼)
這種做法歷史悠久,可以上溯到90年代。有點(diǎn)很明顯,這種做法對IDE來說,實(shí)現(xiàn)起來最簡單,用戶動手修改起來也是比較方便的。然而,如果用戶真的使用這種做法開發(fā)一個大型的項(xiàng)目并長期維護(hù),就會發(fā)現(xiàn)放任開發(fā)人員對designer generated code部分進(jìn)行修改,先不提如何讀懂設(shè)計(jì)器生成的沒有注釋的代碼,很容易導(dǎo)致后續(xù)的可視化操作沖掉一部分手工修改的代碼,甚至連可視化設(shè)計(jì)頁面都無法打開。可視化開發(fā)成了“一錘子買賣”,長期來看,可視化開發(fā)帶來的開發(fā)效率和可維護(hù)性優(yōu)勢都非常有限。畢竟,軟件不是一蹴而就的,而是需要長期的維護(hù)和迭代,才能充分發(fā)揮出價(jià)值。
為了解決這個問題,讓可視化開發(fā)可以長期發(fā)揮效用,微軟在做新一代桌面應(yīng)用開發(fā)方式時(shí)參考了Web中使用的HTML技術(shù),2008年推出了WPF技術(shù)。使用Visual Studio開發(fā)WPF應(yīng)用的界面時(shí),IDE將用戶拖拽控件、設(shè)置屬性的結(jié)果保存為XAML格式(一種XML)的元數(shù)據(jù)。因?yàn)?span id="gg8g4gg" class="candidate-entity-word" data-gid="19805297">XAML本身就是可視化設(shè)計(jì)的結(jié)果,可以和可視化設(shè)計(jì)器一一對應(yīng),用戶對XAML的修改可以實(shí)時(shí)反饋到可視化設(shè)計(jì)頁面,這就是Visual Studio默認(rèn)的Split視圖。用戶可以隨時(shí)在可視化開發(fā)和編碼擴(kuò)展之間切換,適配開發(fā)階段和維護(hù)階段。
(Visual Studio生成的WPF元數(shù)據(jù))
將面向過程的代碼切換為面向結(jié)果的元數(shù)據(jù),可視化開發(fā)從“一錘子買賣”到持續(xù)覆蓋,可視化開發(fā)終于發(fā)揮出了應(yīng)有的價(jià)值。下面是兩種技術(shù)路線的特性對比:
評價(jià)標(biāo)準(zhǔn) | 生成源代碼 | 生成元數(shù)據(jù) |
產(chǎn)品化程度 | 低(需通過混淆來保護(hù)版權(quán)) | 高 |
擴(kuò)展開發(fā)的推薦方式 | 修改生成的源代碼 | 開發(fā)插件(元數(shù)據(jù)標(biāo)簽) |
可視化開發(fā)覆蓋度 | 創(chuàng)建時(shí) | 全生命周期 |
總體的可維護(hù)性 | 差 | 好 |
總體的開發(fā)效率 | 低(與編碼開發(fā)接近) | 高 |
回到文章開頭的問題。作為一名程序員,如果你希望使用低代碼開發(fā)工具構(gòu)建并長期維護(hù)一個軟件項(xiàng)目,請趁早拋棄“導(dǎo)出源代碼”的想法,因?yàn)榈痛a最大的價(jià)值并不是像可配置的代碼模板一樣,初次創(chuàng)建一個頁面或業(yè)務(wù)邏輯,而是降低長期的開發(fā)和維護(hù)成本。選擇一個產(chǎn)品化程度高(重點(diǎn)關(guān)注頁面和邏輯設(shè)計(jì)的靈活度、文檔、教程和開發(fā)者社區(qū)),采用元數(shù)據(jù)驅(qū)動技術(shù)路線的低代碼開發(fā)平臺吧,比如葡萄城的活字格低代碼開發(fā)平臺,如果有必要按照廠商提供的類似于“插件”或“子系統(tǒng)集成”的方式進(jìn)行擴(kuò)展開發(fā)。
如果你做的是“一錘子買賣”的項(xiàng)目,后續(xù)將維護(hù)工作完全移交給甲方,那就別用低代碼。讀別人寫的代碼很痛苦,讀機(jī)器生成的沒有注釋的代碼簡直是噩夢。大家都是程序員,同行何苦為難同行?
如果想了解更多低代碼信息,歡迎私信回復(fù)“低代碼”了解更多~