低代碼會使應用程序過于復雜嗎?
譯文低代碼繼續(xù)受到大量關注和爭論。許多軟件開發(fā)人員仍然想知道使用低代碼是否會使應用程序開發(fā)過程更好,或者它是否會干擾開發(fā)過程并導致劣質(zhì)應用程序。其他人則擔心低代碼的安全隱患。
當然,如果使用低代碼的必然結(jié)果是更高的應用程序復雜性,那么低代碼可能會導致安全問題的難度增加。但真的是這樣嗎?我最近寫了很多關于應用程序復雜性的文章,還有很多關于低代碼的文章。但是應用程序復雜性與使用低代碼之間的相關性是一個有趣的觀點。
復雜性與方法無關
需要明確的是,低代碼的必然結(jié)果不一定是復雜性。就像傳統(tǒng)的應用程序開發(fā)一樣,復雜性可以而且經(jīng)常會進入產(chǎn)品代碼庫的生命周期。雖然不是不可避免的,但它很常見。無論應用程序是如何構建的,你都可以采取許多步驟來降低應用程序的復雜性,從而提高性能、可擴展性、可用性和創(chuàng)新速度。
是的,與所有應用程序一樣,低代碼應用程序可能會變得復雜,并且需要使用簡化技術來降低復雜性。但這些問題與使用低代碼無關。它們在常規(guī)產(chǎn)品開發(fā)過程中同樣重要。
未知并不復雜
低代碼確實增加了應用程序中不是由開發(fā)團隊直接編寫的代碼量。還有更多代碼是由低代碼平臺自動生成的,或者包含在你的應用程序運行所需的庫中,但不是你的開發(fā)人員的產(chǎn)品。因此,當你使用低代碼技術時,你的應用程序中通常會有更多“未知”代碼。
但未知與復雜性不同。未知代碼(由其他人提供并添加到你的應用程序的代碼)本身不會增加應用程序的復雜性。
事實上,情況可能正好相反。
低代碼降低復雜性
使用低代碼開發(fā)技術可以減少過度復雜性滲入應用程序的可能性。通過簡化應用程序開發(fā)人員的認知負荷和時間壓力,低代碼平臺允許開發(fā)人員專注于更大的圖景、應用程序業(yè)務邏輯,而較少關注細節(jié)。
細枝末節(jié)會發(fā)生什么?它們由低代碼環(huán)境處理。此外,低代碼環(huán)境將使用標準化的、經(jīng)過驗證的技術來完成這些低級任務。自動生成的代碼和庫代碼早在你的應用程序團隊使用它之前就已開發(fā)、測試和改進。你使用低代碼構建應用程序的次數(shù)越多,在你的應用程序中使用的這種預先測試的標準化代碼的數(shù)量就越多。使用低代碼工具來構建你的應用程序會導致更多地使用標準化編碼技術、行業(yè)最佳實踐,并最終實現(xiàn)更多的軟件重用。
但是復雜性呢?增加標準化編碼的使用和利用軟件重用是用于降低應用程序復雜性的常用策略。標準化編碼減少了理解應用程序如何工作所涉及的認知負擔,而代碼重用往往會減少復雜應用程序中可能出現(xiàn)故障的移動部件的數(shù)量。因此,使用低代碼工具創(chuàng)建的應用程序?qū)⒈仁褂脗鹘y(tǒng)編程技術開發(fā)的功能等效應用程序更簡單。
標準化和重用如何影響復雜性?
當我們考慮應用程序的復雜性時,我們通常會考慮應用程序的兩個不同方面:組成應用程序的組件的大小和數(shù)量,以及應用程序軟件的更改率。
增加對可重用代碼的使用會減少應用程序中組件的大小和數(shù)量,而增加對標準化編碼技術的使用往往會降低變化率——至少對于應用標準化編碼的模塊或組件而言。
任何給定應用程序的實際情況都會更加復雜,但基本原理仍然適用。增加標準化編碼技術的使用和增加可重用軟件組件的使用往往會降低最終應用程序的復雜性。
這并不新鮮
這種分析對于低代碼來說并不是新的或獨特的。幾十年來,我們一直使用軟件抽象來“隱藏”開發(fā)人員的代碼復雜性。每當我們使用高級語言(例如 C、Java、Ruby 或 Go)時,我們都會抽象出為執(zhí)行所需操作而創(chuàng)建和執(zhí)行的實際代碼。我們將開發(fā)重點放在“更高級別的構造”上,允許編譯器或解釋器處理創(chuàng)建和運行機器代碼的細節(jié)。
它并不止于編譯器。當我們使用更高級別的軟件包、環(huán)境和框架時,我們也會抽象出復雜性,以便我們可以專注于更高級別的功能。因此,使用 Ruby on Rails、Spring、Hibernate、Gin、jQuery、Bootstrap 甚至 HTML/CSS,我們正在抽象出復雜性,以便在更高層次上工作。結(jié)果是更強大的應用程序和更高的可靠性,更少的開發(fā)工作和更低的支持成本。這與當今低代碼社區(qū)中討論的論點沒有什么不同。
軟件開發(fā)的世界是一個復雜的世界,每天都有新的挑戰(zhàn)出現(xiàn)。軟件開發(fā)人員經(jīng)常使用工具、資源、環(huán)境和技術來簡化軟件開發(fā)過程。最近,低代碼技術得到了改進,低代碼平臺已成為改進軟件開發(fā)過程的有用工具,而不會增加應用程序的過度復雜性。