偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

可以編寫代碼的代碼:代碼生成的利與弊

新聞 前端
代碼生成的當(dāng)前狀態(tài)是無處不在的(2019年春季)。REST API的數(shù)量激增,導(dǎo)致在過去十年中針對各種編程語言和環(huán)境開發(fā)的API客戶端生成器種類繁多。

 

[[281681]]

代碼生成的當(dāng)前狀態(tài)

代碼生成的當(dāng)前狀態(tài)是無處不在的(2019年春季)。

如今,代碼生成發(fā)生在軟件堆棧的每一層,

  • 包括Java庫(如swagger CodeGen),
  • 最新的交叉編譯器/編譯器(如針對JavaScript應(yīng)用程序的Babel)
  • 以及全棧生成器(如Starter StackGen(tm))

REST API的數(shù)量激增,導(dǎo)致在過去十年中針對各種編程語言和環(huán)境開發(fā)的API客戶端生成器種類繁多。

就像某種巨大的數(shù)字Turducken一樣,REST API及其生成的客戶端似乎能夠?qū)⑷魏问挛镞B接到任何事物。

因此,讓我們看一下代碼生成管理中涉及的火雞,鴨子和小雞……

1.代碼重寫

自動編碼的一種廣泛形式是代碼重寫-用于將一種語言版本的語法轉(zhuǎn)換為另一種語言,有時(shí)甚至完全轉(zhuǎn)換為另一種語言。

例如,諸如Scala之類的語言實(shí)際上是將您的代碼重寫為與Java兼容的代碼。

著名的奇怪的Lombok項(xiàng)目基本上在您鍵入時(shí)重寫Java代碼,生成幻像方法,因此您可以專注于出色。

就像Babel一樣,任何優(yōu)秀的JavaScript開發(fā)人員都可以證明“編譯器”是如何將您的高級ES2017重寫為已使用了10年的,與瀏覽器兼容的舊版JavaScript,因此您可以編寫現(xiàn)代代碼,而不必?fù)?dān)心瀏覽器的行為方式。

2.基于模板的生成

React生態(tài)系統(tǒng)在創(chuàng)建基于模板的應(yīng)用程序框架(包括React的“ create-react-app” CLI命令)方面特別活躍。

在整個(gè)軟件行業(yè)中,其他基于模板的代碼生成也很普遍。HTML模板和流行的新靜態(tài)站點(diǎn)生成器通常利用流行的胡須或車把模板引擎來利用模板解析。

在服務(wù)器模板引擎(例如Velocity)以及基于服務(wù)器的胡須和車把實(shí)現(xiàn)中,吐出了預(yù)渲染的源文件(例如HTML和越來越多的JavaScript)。

3.運(yùn)行時(shí)動態(tài)代碼

模板并不是生成代碼的唯一方法。

通過自省,例如Java和Java Reflection API等語言以及Ruby Metaprogramming,運(yùn)行代碼可以是“自我感知”的,一旦您的代碼自我感知,構(gòu)建真正動態(tài)應(yīng)用程序的選項(xiàng)就會真正擴(kuò)展。

在Starter,我們使用Java構(gòu)建了StackGen生成器引擎,這意味著我們能夠使用便捷的JavaPoet庫來動態(tài)構(gòu)建Java類文件,其中包括在運(yùn)行時(shí)動態(tài)合成的功能。有趣的是,這些類可以在內(nèi)存中編譯并由類加載器加載,而無需寫入磁盤。

他們說Java不是動態(tài)語言!

這種類型的動態(tài)生成的代碼令人興奮,因?yàn)樗粌H節(jié)省了我們手動編寫代碼的時(shí)間和金錢,而且還提供了機(jī)會在運(yùn)行時(shí)在應(yīng)用程序中創(chuàng)建響應(yīng)行為,而無需人工干預(yù)(可能基于AI決策)使我們的應(yīng)用程序和數(shù)字體驗(yàn)比以往更具吸引力和實(shí)用性。

但是生成的代碼很爛!

不幸的是,軟件行業(yè)的歷史上充斥著代碼生成器,無代碼開發(fā)工具,所見即所得前端生成器的示例,并被似乎從未消亡的古老平臺吐出的普遍的加密源代碼恐怖所困擾(我正在尋找在您的DreamWeaver Ultradev上還是應(yīng)該說Drumbeat 2000 ??。?/p>

當(dāng)機(jī)器充滿了晦澀的技術(shù)和混亂的變量名時(shí),誰想要處理機(jī)器吐出的代碼?生成的昔日代碼只是令人沮喪和悲傷,而您想要建立的任何東西都沒有。

幸運(yùn)的是,時(shí)代變了

在2019年,工具和軟件開發(fā)的最佳實(shí)踐已經(jīng)發(fā)展到人類和機(jī)器可以真正在中間相遇的地步。諸如APIcur.io,StackGen和Microsoft PowerApps之類的代碼生成器經(jīng)過發(fā)展,可以克服過去的局限性,同時(shí)將所有代碼生成技術(shù)中的最佳功能結(jié)合到現(xiàn)代開發(fā)工具中。

代碼生成的優(yōu)點(diǎn)

  • 無需手動編碼=更少的錯誤
  • 實(shí)現(xiàn)更大,更復(fù)雜的模式可能節(jié)省大量時(shí)間
  • 簡單應(yīng)用和PoC的快速上市周期
  • 穩(wěn)定的基礎(chǔ)架構(gòu)意味著更少的時(shí)間浪費(fèi)
  • CI / CD友好,可以將代碼生成作為步驟添加到任何CI管道或開發(fā)工作流程中
  • 端到端生成消除了處理多個(gè)源文件和文件類型時(shí)的錯誤
  • 可以將新功能集成到基礎(chǔ)模板中,以在單個(gè)構(gòu)建中跨大型代碼庫實(shí)現(xiàn)
  • 但這并不是說代碼生成沒有缺點(diǎn)。

代碼生成的缺點(diǎn)

  • 并非所有應(yīng)用程序都將從代碼生成中受益
  • 與手動選擇每個(gè)代碼庫,模式和編碼樣式相比,代碼生成更加不靈活
  • 對基礎(chǔ)模板的更改將推廣到所有生成的文件,因此更改必須高度兼容并經(jīng)過全面測試
  • 生成的代碼必須在代碼庫中與開發(fā)人員代碼仔細(xì)隔離- 存在覆蓋開發(fā)人員代碼的風(fēng)險(xiǎn),并且應(yīng)該可以在不影響任何現(xiàn)有代碼的情況下進(jìn)行重新生成
  • 代碼生成會增加一些復(fù)雜性-例如,要真正了解生成器并與之合作,您需要了解生成的代碼及其原因-除了代碼庫的常規(guī)問題之外
  • 編寫其他代碼的編寫代碼的思維模式可能會變得松散,尤其是在編寫生成其他應(yīng)用程序的應(yīng)用程序時(shí)

LCDP和將創(chuàng)新推向邊緣

LCDP(低代碼開發(fā)平臺)作為“無代碼開發(fā)”的最新形式以及橋接高級用戶/ jr的新方法而受到關(guān)注。開發(fā)者差距。

隨著對新功能和新系統(tǒng)需求的增長,開發(fā)人員變得捉襟見肘,許多用戶被超載的Excel電子表格所束縛,或者由于各個(gè)級別的開發(fā)人員資源稀缺而根本沒有所需的軟件功能。

消費(fèi)者SaaS解決方案可以完成許多一次性任務(wù),但是一堆雜亂無章的Web應(yīng)用程序和服務(wù)并不是滿足許多需求的可靠基礎(chǔ)。

另一方面,對于許多組織來說,昂貴的企業(yè)系統(tǒng)根本不是一個(gè)選擇。

除了節(jié)省開發(fā)成本外,授權(quán)“公民開發(fā)人員”在適當(dāng)時(shí)構(gòu)建自己的解決方案是LCDP價(jià)值主張的主要驅(qū)動力。

代碼生成器直接位于解決方案域的中間。

使用OpenAPI和StackGen端到端生成

StackGen采用整體方法來生成代碼-基于OpenAPI / Swagger模式。

開發(fā)從一開始就開始,重點(diǎn)是使用OpenAPI / Swagger設(shè)計(jì)出色的API 。

然后,該設(shè)計(jì)準(zhǔn)則使您可以生成具有可預(yù)測行為的健壯堆棧,并使用此處的任何自定義邏輯和前端設(shè)計(jì)對其進(jìn)行精確擴(kuò)展。

為了達(dá)到這種靈活性,StackGen使用了3種代碼生成步驟以及3種不同的實(shí)現(xiàn)方式。

系統(tǒng)的3個(gè)主要組件使用了多種生成技術(shù):Swagger CodeGen,MyBatis生成的DAO和映射,以及即將到來的StackGen PRO,ReactJS前端生成。

Swagger CodeGen和StackGen React代碼都使用Mustache從Mustache模板文件生成React內(nèi)容。

  • Mustache
  • JavaPoet
  • Swagger CodeGen
  • MyBatis Generator

這種方法的優(yōu)勢在于它是可插入的,并允許我們在運(yùn)行時(shí)和編譯之前生成。

通過生成對開發(fā)人員友好的格式的高質(zhì)量源代碼,現(xiàn)代代碼生成器在提供現(xiàn)代高度可擴(kuò)展且健壯的基準(zhǔn)代碼庫的同時(shí),使全棧開發(fā)人員的效率倍增。

關(guān)于作者

約翰·麥克馬洪(John McMahon)是Starter Inc.的首席執(zhí)行官,該公司是Extentech Inc的創(chuàng)始人,并且多年來是StackGen,Sheetster,OpenXLS,ExtenXLS和眾多軟件項(xiàng)目的開發(fā)商。

責(zé)任編輯:張燕妮 來源: 博客園
相關(guān)推薦

2013-03-22 16:43:03

可讀代碼代碼的藝術(shù)代碼編寫

2012-07-11 10:51:37

編程

2024-02-20 21:49:29

AI前端代碼

2022-06-07 09:30:35

JavaScript變量名參數(shù)

2015-11-05 09:07:12

代碼傻瓜式

2021-04-25 11:31:45

React代碼整潔代碼的實(shí)踐

2024-06-24 14:19:48

2016-11-30 18:35:03

JavaScript

2021-03-17 08:00:59

JS語言Javascript

2012-12-17 13:51:22

Web前端JavaScriptJS

2020-09-21 05:57:11

代碼編程語言開發(fā)

2024-02-23 08:00:00

2014-11-10 09:59:08

jQuery

2014-07-29 13:55:10

程序員代碼

2020-07-15 14:51:39

代碼C+開發(fā)

2009-06-24 15:00:39

Javascript代

2024-03-20 08:00:00

軟件開發(fā)Java編程語言

2023-10-10 08:00:00

2023-03-27 15:05:10

Python技巧

2020-08-27 07:00:00

代碼軟件應(yīng)用程序
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號