日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
可以編寫代碼的代碼:代碼生成的利與弊

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

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

成都創(chuàng)新互聯(lián)長(zhǎng)期為上千多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為天臺(tái)企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作,天臺(tái)網(wǎng)站改版等技術(shù)服務(wù)。擁有十年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。

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

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

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

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

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

1.代碼重寫

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

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

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

就像Babel一樣,任何優(yōu)秀的JavaScript開(kāi)發(fā)人員都可以證明“編譯器”是如何將您的高級(jí)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)生成器通常利用流行的胡須或車把模板引擎來(lái)利用模板解析。

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

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

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

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

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

他們說(shuō)Java不是動(dòng)態(tài)語(yǔ)言!

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

但是生成的代碼很爛!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

使用OpenAPI和StackGen端到端生成

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

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

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

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

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

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

  • Mustache
  • JavaPoet
  • Swagger CodeGen
  • MyBatis Generator

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

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

關(guān)于作者

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


文章名稱:可以編寫代碼的代碼:代碼生成的利與弊
文章來(lái)源:http://www.5511xx.com/article/dpcdgdg.html